sql >> Databáze >  >> RDS >> Mysql

Jak používat více databází pro jednu aplikaci rails 3.1 v Heroku?

Vycházíme z předchozích odpovědí, ale začleňujeme do konfigurace některé výhody Rails 3 a zjednodušujeme analýzu...

# config/application.rb
module MyApp
  class Application < Rails::Application
    ... other configs

    config.secondary_database_url = ENV['SECONDARY_DB_URL']
  end
end

Možná to budeme chtít přepsat ve vývoji/testování

# config/environments/development.rb

module MyApp
  class Application < Rails::Application
    ... other configs

    config.secondary_database_url = 'SOME_CONNECTION_STRING'
  end
end    

Nyní, abychom nastavili třídu, budeme mít naše modely zděděné od...

# 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. Mohu nastavit, aby WHERE col LIKE '%' vybral také hodnoty NULL?

  2. Jak získat text SQL ze spouštěče události Postgres

  3. Php/Mysql datum uloženo jako '0000-00-00'

  4. Zjistěte, zda byl řádek aktualizován nebo vložen