説明
最適なオプションはgem yaml_dbで、 Heroku開発チームの腸内に登場しました。
gemの本質は、YAMLファイル内の1つのデータベースからのデータのダンプをディスクに保存し、それを別のデータベースにロードすることです(もちろん、このアプローチはバックアップにも使用できます)。
このアプローチの利点は、どのベースで作業するかが問題にならないことです。 理論的には、ActiveRecordアダプターが存在するすべてのデータベースがサポートされています。
最も単純なユースケース
Gemfileにyaml_dbを追加します。
gem 'yaml_db', :git => 'git://github.com/ludicast/yaml_db.git'
Bundlerを起動します。
bundle install
初期データベース構成:
config / database.yml
production: adapter: sqlite3 database: db/production.sqlite3 pool: 5 timeout: 5000
実際、ダンプ自体を実行します。
export RAILS_ENV=production
rake db:data:dump
その後、データベースはdb / data.ymlにあるはずです。
すべて順調であれば、データベース構成を目的の構成に変更します。
config / database.yml
production: adapter: mysql2 database: app_production username: root password: root host: localhost pool: 5 timeout: 5000
必要なgemをgemfileに追加することを忘れないでください。
データベースを作成し、移行を実行します。
rake db:create
rake db:migrate
最後に、ダンプを新しいデータベースにロードします。
rake db:data:load
これでサーバーを起動し、すべてが機能していることを確認できます。
備考
Ruby 1.9ブランチを使用する場合、Bundlerバージョン1.0.10はデフォルトのYAMLエンジンとしてPsychをロードしますが、これはRailsの一部のバージョンでは正しく動作しないため、ダンプの挿入時に問題が発生した場合は、解決策の1つPsychをSyckに置き換える可能性があります。
config / application.rbの次の行
Bundler.require(:default, Rails.env) if defined?(Bundler)
挿入する
YAML::ENGINE.yamler = 'syck'
yaml_dbはデータをダンプできるだけでなく、データベース構造もダンプできます。
rake db:dump
rake db:load
最初のタスクはデータと構造をダンプし、2番目のタスクはテーブルを作成してデータをロードします。
参照資料
yaml_dbの Herokuブログ投稿
Rails 2.x のyaml_dbブランチ