【问题标题】:Rails testing not loading custom app config fileRails 测试未加载自定义应用程序配置文件
【发布时间】:2011-11-03 05:03:42
【问题描述】:

我只是在学习 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 的测试环境有什么不同?

【问题讨论】:

  • 你的配置文件是什么样子的?
  • 开发:upgrade_price:24 root_url:localhost:3000#etc 测试:upgrade_price:24 root_url:localhost:3000#etc

标签: ruby-on-rails testing yaml


【解决方案1】:

这是我自己想出来的,因为 Heroku 和测试环境有一个共同点:

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

我所有的控制器都很好地加载了上面提到的自定义配置变量(在 dev 和 Heroku 中),但是一旦模型尝试在 Heroku 中加载其中一个或测试时,它就吓坏了。

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

(或尝试this

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-09-26
      • 1970-01-01
      • 2010-10-05
      • 1970-01-01
      • 2010-11-06
      • 2023-02-07
      • 1970-01-01
      • 2017-08-19
      • 2017-11-16
      相关资源
      最近更新 更多