require 'rubygems'
require 'sequel'
require 'logger'
# on memory DB
DB = Sequel.connect('sqlite:///', {:logger => Logger.new('test.log')})
DB.create_table :users do
primary_key :id
string :name
string :profile
datetime :created_at, :default => Time.now
end
こんな感じで出来て大変便利!
普通にschema pluginを使ってモデルを定義していましたが、
リファレンスを見るとschemaはテスト向けの変更の予定が無いDB向けで、
普通はmigrationを使ってね、と書いてありました
This plugin is mostly suited to test code. If there is any chance that your application’s schema could change, you should be using the migration extension instead.
Sequel: The Database Toolkit for Ruby Sequel::Plugins::Schema
# db/migrate/001_create_posts.rb
class CreatePosts < Sequel::Migration
def up
create_table :posts do
primary_key :id
string :text
end
end
end
# rakefile.rb
require 'rubygems'
require 'rake'
require 'sequel'
require 'sequel/extensions/migration'
namespace :db do
desc 'migrate database'
task :migrate do
DB = Sequel.connect('sqlite//db/development.sqlite3')
Sequel::Migrator.apply(DB, './db/migrate')
end
end
これでコンソールから
rake db:migrate
とすると、001_create_posts.rbの内容が実行されます
参考
Sequelでのmigration用Rakefile – よしだメモ
SequelでMigration – みじんこ日記
・xml出力
get '/hoge.xml' do
content_type 'text/xml', :charset => 'utf-8'
'<hoge><body>hogehoge</body></hoge>'
end
みたいにします
もちろんerbなどのテンプレートを用いることも可能
・sequelで削除
Posts.filter('id = ?', request[:id]).delete
みたいな感じ
findだとdeleteメソッドがないって怒られた イミフ
・jqueryでAjax
var params = {};
$('input').each(function(){ params[this.name] = this.value });
ajax = $.post('/post',
params,
function(responseText){
var res = responseText;
if(res != 'failed'){
alert('posted!');
} else {
alert('failed');
}
}
);
inputのvalueをハッシュ(JSON?)にセットしてpostするとシンプル…かな?