2012-08-07 70 views
0

我一直在關注Ryan Bates在第123號的railscast#85,關於YAML配置文件,我遇到了一個問題,我找不到回答。我通過RVM和Rails 3.2.6使用Ruby 1.9.3p194。yml文件存在,但rails服務器和乘客抱怨說它沒有

在我applications.rb,我有

require 'yaml' 
APP_CONFIG = YAML.load_file("#{Rails.root}/config/config.yml")[Rails.env] 

我把/config/config.yml如下:

username: "userhere" 
password: "pass" 

當我嘗試 「軌道的」 它給了我一個錯誤

/opt/local/lib/ruby1.9/1.9.1/psych.rb:297:in `initialize': No such file or directory - /config/config.yml (Errno::ENOENT) 

,當我嘗試加載乘客的頁面,我得到

Error message: 
No such file or directory - /config/config.yml 
Exception class: 
Errno::ENOENT 

我已經試過File.join線here但我得到了同樣的錯誤

'join', can't convert nil to String (TypeError) 

當我尋找答案,每一個線程解決了YML文件的問題未找到錯誤的創建文件,但我的存在,它仍然給我的錯誤信息。我該如何解決這個問題?

+0

您的Rails.root返回零,這是您需要排除故障的真正問題。 – 2012-08-07 20:34:49

+0

當我將APP_CONFIG行移動到environment.rb時,我得到未初始化的常量Pixel8meRails :: Application :: APP_CONFIG(NameError)。當我將它移入/config/initializers/load_config.rb時,我得到了相同的錯誤 – 2012-08-07 21:07:07

回答

0

答案就在這裏:Why is my Rails.root nil?

Application對象還不存在,所以Rails.root回報nil。嘗試把YAML配置的東西放在初始化器中,就像RB建議的那樣。

+0

另一個相關的SO帖子:http://stackoverflow.com/questions/5284602/variable-loaded-in-environment-rb-not-found-內部測試 – jordanpg 2012-08-07 21:26:31

+0

感謝您的提示 - 我試着把它放到/config/initializers/load_config.rb中,它仍然不會加載。我想這是因爲我試圖在加載之前使用常量來設置郵件設置。我最終不得不將config.before_configuration中的require yaml和APP_CONFIG行放在application.rb中。 – 2012-08-07 22:21:44

相關問題