Rails测试没有加载自定义应用程序配置文件

时间:2011-08-24 21:53:59

标签: ruby-on-rails testing yaml

我只是在学习Rails测试而且我无法运行任何测试(甚至是“断言真实”示例),因为我从一个无法加载自定义配置文件变量的无关模型中得到错误。

我的应用程序在environment.rb中根据此Railscast剧集(http://railscasts.com/episodes/85-yaml-configuration-file)加载了自定义配置文件

APP_CONFIG = YAML.load_file("#{::Rails.root.to_s}/config/config.yml")[RAILS_ENV]

这在普通应用程序中很好,但在测试中它没有将它加载到模型中:

    has_attached_file :photo,
                      :bucket => APP_CONFIG['s3_bucket']

控制台错误:`const_missing_from_s3_library':未初始化的常量Asset :: APP_CONFIG(NameError)

(应该注意的是,我试图测试的模型不一样,但我猜测试环境会运行整个应用程序吗?)

不会运行environment.rb的测试环境有什么不同?

2 个答案:

答案 0 :(得分:3)

我自己想到了这一点,因为Heroku和测试环境有一个共同点:

Heroku不会在模型之前加载environment.rb ,测试环境也不会。

我的所有控制器都加载了上面提到的自定义配置变量(在dev和Heroku中)但是只要模型试图在Heroku中加载其中一个或进行测试,它就会吓坏了。

课程:对于Heroku,使用他们的custom config vars并通过ENV ['name']引用它,并将'export name =“whatever”'添加到你的.bash_profile

(或尝试this

答案 1 :(得分:0)

我把它放在application.rb(rails 3.2)的底部,它在Heroku上工作正常。