既存のデータベースからモデル/移行スクリプトを生成できる Ruby 用の ORM はありますか?
私はシナトラでそれを使用します。
Sequelの移行を使用して、既存のスキーマをダンプできます(リンク先ページの「現在のスキーマを移行としてダンプする」を参照)。
また、PostgresqlまたはMS SQL Serverを使用している場合は、データベースをスキーマとして、またはデータとともにスクリプトにダンプできることも知っています。使用するORMに移行機能がない場合(またはある場合でも)、それらのスクリプトを使用でき、移行内に埋め込むこともできます(Sequelは標準のSQL文字列も受け入れますが、他のORMもおそらく可能です) )。
編集:モデルの生成。
モデルを生成したい場合、SequelにはリフレクションAPIがあります。このような何かがあなたを始めることができます:
generator = ->(table) {
s = <<STR
require 'sequel'
class #{table} < Sequel::Model
# other stuff here
end
STR
}
DB.tables.reject{|name| name == :schema_info }
.each do |table|
File.new "app/models/#{table}.rb" do |f|
f.write generator.call(table)
end
end
アソシエーションを行うのは難しいでしょうが、私は可能だと思います。Database#foreign_key_listとモデルの関連付けの基本を見てください。
これは ORM ではありませんが、これを行う magic_models という非常に古い gem があります。まだ機能するかどうかはわかりません: http://magicmodels.rubyforge.org/