Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Ruby
branch: develop
Failed to load latest commit information.
lib bump to v0.2.1
spec add specs
.gitignore add rake gem
.travis.yml add .travis.yml
Gemfile add dependencies
LICENSE bundle gem banana
README.md add .travis.yml
Rakefile add dependencies
banana.gemspec add dependencies

README.md

Banana Build Status

A simple plugin for multiple databases in rails app.

Installation

Add this line to your application's Gemfile:

gem 'banana'

And then execute:

$ bundle

Or install it yourself as:

$ gem install banana

Usage

  1. add multiple database settings to config/database.yml
  2. add connection setting to model
  3. add database name to migration
  4. as always run rake db:create, rake db:migrate, rake db:drop

Examples

# 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

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request
Something went wrong with that request. Please try again.