sql >> データベース >  >> RDS >> Mysql

Herokuで1つのRails3.1アプリに複数のデータベースを使用するにはどうすればよいですか?

    以前の応答を処理しますが、構成にいくつかのRails 3の利点を組み込み、解析を簡素化します...

    # config/application.rb
    module MyApp
      class Application < Rails::Application
        ... other configs
    
        config.secondary_database_url = ENV['SECONDARY_DB_URL']
      end
    end
    

    開発/テストでこれをオーバーライドしたい場合があります

    # config/environments/development.rb
    
    module MyApp
      class Application < Rails::Application
        ... other configs
    
        config.secondary_database_url = 'SOME_CONNECTION_STRING'
      end
    end    
    

    次に、クラスを設定するために、モデルに継承させます...

    # lib/active_record/secondary.rb 
    module ActiveRecord
      class Secondary < ActiveRecord::Base
        self.abstract_class = true
    
        # prior to AR 3.2.1
        url = URI.parse( MyApp::Application.config.secondary_database_url )
        establish_connection(
          :adapter  => 'mysql',
          :host     => url.host,
          :username => url.userinfo.split(':')[0],
          :password => url.userinfo.split(':')[1],
          :database => url.path[1..-1],
          :port     => url.port || 3306
        )
    
        # as of AR 3.2.1
        establish_connection(MyApp::Application.config.secondary_database_url)
    
      end
    
      class SecondaryMigration < ActiveRecord::Migration
        def connection
          ActiveRecord::Secondary.connection 
        end
      end
    
    end
    


    1. OracleSQL句の評価順序

    2. すべての便利な11gダイナミックパフォーマンスビュー

    3. SQLServer2005の階層クエリ

    4. ソケット'/var/lib/mysql/mysql.sock'を介してローカルMySQLサーバーに接続できません(2)