2012-09-11 9 views
5

は、それはそれはどういう意味Heroku「config/database.ymlをDATABASE_URLから読み込む」とはどういう意味ですか?私のアプリは、Herokuの上に構築されている場合

Writing config/database.yml to read from DATABASE_URL 

を言いますか?これはシダーのスタックに新しいですか?

私はRackアプリを持っています。私config.ruはBarmy竹スタック上で動作するために使用:自分のコンピュータで

#!/usr/bin/ruby 
environment = ENV['DATABASE_URL'] ? 'production' : 'development' 

require './pb.rb' 

dbconfig = YAML.load(File.read('config/database.yml')) 
Pb::Models::Base.establish_connection dbconfig[environment] 
Pb.create if Pb.respond_to? :create 

run Pb 

それはconfig/database.yml(ソース管理にコミットされていない)

development: 
    adapter: sqlite3 
    database: db/development.sqlite3 
    pool: 5 
    timeout: 5000 

私の地元を読んでいましたそして、Herokuの上で、それは読んでいましたHerokuのdatabase.yml。 Cedar heroku run cat config/database.ymlでこれを調べると、ymlではなくRubyファイルであるように見えます。この変更はどこで説明されていますか?

答えて

8

configディレクトリのRuby build pack writes a new database.yml fileがある場合は、アプリをHerokuにプッシュすると表示されます。

レールruns this file through ERB when loading it、さまざまな動的オプションを許可します。 Herokuはこれを使用して、DATABASE_URL環境変数を読み取ったERBファイルを生成し、そのデータベースを指し示す適切な.ymlファイルを作成します。

私は、Bambooの場合、作成されたdatabase.ymlは、あなたのデータベースを指しているプレーンなYamlファイル(私は参照が見つかりません)と仮定しています。

Cedarでアプリケーションを動作させるには、Railsと同じ方法でERBを通じてファイルを実行する必要があります。これを変更します。

dbconfig = YAML.load(File.read('config/database.yml')) 

もし

require 'erb' 
dbconfig = YAML.load(ERB.new(File.read('config/database.yml')).result) 

にあなたの database.ymlはノーオペレーションあってはならない。このようにERBを走る、単なるYAMLであり、それはHerokuの上で右の値をピックアップしますローカル。

+0

マットありがとう、これはまさに問題でした。 –

+0

Herokuに手紙を書き、文書の更新を依頼しました。彼らは、ヘロクに感謝しました! https://devcenter.heroku.com/articles/cedar-migration#postgres –

関連する問題