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

发布于 2024-12-01 09:55:47 字数 619 浏览 1 评论 0原文

我刚刚学习 Rails 测试,无法运行任何测试(甚至是“断言 true”示例),因为我从不相关的模型中收到错误,无法加载自定义配置文件变量。

我的应用程序在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的测试环境有什么不同?

I am just learning Rails testing and I am not able to run ANY tests (even the "assert true" examples) because I get an error from an unrelated model not being able to load a custom config file variable.

My app has a custom config file loaded per this Railscast episode (http://railscasts.com/episodes/85-yaml-configuration-file) in environment.rb

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

Thats fine in the normal app but in testing it is not loading it in a model:

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

Console error: `const_missing_from_s3_library': uninitialized constant Asset::APP_CONFIG (NameError)

(It should be noted that is NOT the same model I am trying to test but I guess the testing environment runs the whole app?)

What is different about the testing environment where it won't run environment.rb?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

手心的温暖 2024-12-08 09:55:47

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

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

控制器加载了上面提到的自定义配置变量(在开发和 Heroku 中),但是一旦模型尝试在 Heroku 或测试中加载其中一个,它就会崩溃。

课程:对于 Heroku,使用其 自定义配置变量 并通过 ENV['name' 引用它] 并将 'export name="whatever"' 添加到您的 .bash_profile

(或尝试 这个)

I figured this out myself because Heroku and the testing environment have one thing in common:

Heroku does NOT load environment.rb before the models and neither does the testing environment.

All my controllers loaded the custom config vars mentioned above fine (in dev and Heroku) but as soon as a model tried to load one of those in Heroku or testing, it freaked out.

Lesson: for Heroku, use their custom config vars and reference it by ENV['name'] and add 'export name="whatever"' to your .bash_profile

(Or attempt this)

柠檬心 2024-12-08 09:55:47

我把我的放在 application.rb (rails 3.2) 的底部,它在 Heroku 上运行良好。

I put mine at the bottom of application.rb (rails 3.2) and it worked fine on Heroku.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文