我只是在学习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的测试环境有什么不同?
答案 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上工作正常。