2012-08-07 67 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

相关问题