Railsほど大きいフレームワークを使いたくない時にSinatra + Sequelでやろうとしたら意外と躓くポイントがあったので記録として残しておきます。今回はModelを作ってmigrationする流れについて。

Sequelでモデルを作る時にgeneratorは用意されてないようなので自前で書きます。 ディレクトリ構造にもルールはありませんが、Railsに近いものにして置くと整理が楽でしょう。 titlecontentを持つPostモデルを作るには以下のようなコードを使用します。

db/migrations/20230307_create_posts.rb
Sequel.migration do
  change do 
    create_table(:posts) do
      primary_key :id
      String :title
      String :content
    end
  end
end
models/post.rb
class Post < Sequel::Model
end

そして migrate する時は sequel -mを使用します。

bundle exec sequel -m db/migrations postgres://localhost:5432/my_app_development

できればデータベースの指定をdatabase.ymlから取ってきたかったけど、とりあえず動かしたかったのでそれはまた後で。

参考