2016-05-26 16 views
2

私は単一の環境のためのレールなしでDB接続を作成しており、正常に動作しています。しかし複数の環境でActiveRecordを使用するには?

複数の環境(例、開発、生産、テストなど)のためのDB設定を作成します(正常に動作している)単一の環境のDB接続コード:受け入れ

require 'mysql2' 
require "active_record" 

# Using ActiveRecord 

ActiveRecord::Base.establish_connection(
:adapter=> 'mysql2', 
:database=> 'dev_db', 
:username=> 'root', 
:password=>'root' 
) 


class Planning < ActiveRecord::Base 
end 


p Planning.find(1) 

提案...

+0

他のフレームワーク内で作業しているのですか?これはすべてカスタム作成ですか? (このテクニックは関係なくほぼ同じになりますが、何かが事前に定義されているかどうかは疑問です) –

+0

フレームワークなしruby – Amit

+2

http://stackoverflow.com/questions/5891529/standalone-ruby-how-参照用にデータベース-yml –

答えて

4

どのようなレールが魔法のように見えるかもしれませんが、実際は非常にシンプルです(少なくとも、この場合は、少なくとも)。概要は次のとおりです。

起動時に、アプリケーションは使用可能なすべてのデータベース設定を読み込みます。慣例により、それらはconfig/database.ymlにYAML形式で格納されます。

次に、現在の環境が決定されます。これを行う最も簡単な方法は環境変数です。たとえば:

MY_ENV=production ruby my_script.rb 

次に、スクリプトで、あなたは、現在のenvをフェッチし、対応する接続​​構成を選択して接続するためにそれを使用。

connection_configs = load_database_yml # implement this 
current_env = ENV['MY_ENV'] || 'development' # if no value, assume development mode 
ActiveRecord::Base.establish_connection(connection_configs[current_env]) 
+1

からload-different-environments-environmentに変更してください。 'connection_configs = YAML.load(File.read( 'config/database.yml'))' –

関連する問題