Railsで複数データベースを扱えるBanana
初めてgemを作って、RubyGems.orgで公開してみました。
ソースはGithubに置いてあります。
これは何?
1つのrailsアプリで複数データベースのマイグレーションを実行できるようにするgemです。
gem入れて、設定しておけば普段どおり rake db:create, rake db:migrate, rake db:drop が使えます。
インストール方法
gemなので、Gemfileに書いてbundle installするか、gem installで入ります。
Gemfile
gem 'banana'
もしくは
$ gem install banana
使い方
config/database.yml にdatabaseの設定を追加し、model/migrationに接続先の情報を書きます。
接続先の情報は /#{Rails.env}$/ になるような名前にして下さい。
例
config/database.yml
default: &default adapter: mysql2 encoding: utf8 reconnect: false pool: 5 username: root password: socket: /var/run/mysqld/mysqld.sock development: <<: *default database: fruit_development test: <<: *default database: fruit_test production: <<: *default database: fruit_production vegetable_development: <<: *default database: vegetable_development vegetable_test: <<: *default database: vegetable_test vegetable_production: <<: *default database: vegetable_production
app/models/vegetable.rb
class Vegetable < ActiveRecord::Base establish_connection "vegetable_#{Rails.env}" end
app/models/onion.rb
class Onion < Vegetable end
db/migrate/20120728121720_create_onions.rb
class CreateOnions < ActiveRecord::Migration DATABASE_NAME = "vegetable_#{Rails.env}" def change create_table :onions do |t| t.timestamps end end end