【问题标题】:NameError: uninitialized contant CONFIG when running rake db:create (YAML)NameError: uninitialized contant CONFIG when running rake db:create (YAML)
【发布时间】:2016-12-21 21:34:12
【问题描述】:

我正在尝试让应用程序的本地实例运行,但我一直在运行

NameError: uninitialized constant CONFIG

当我运行bundle exec rake db:setup。

这是 CONFIG 在我的 environment.rb 文件中的样子:

CONFIG = YAML.load(File.read('/etc/twkeys/university/course_scheduler/config.yml')).freeze

当我在控制台中测试上述内容时,我得到了

NameError: uninitialized constant YAML 

如果我在控制台中运行require 'yaml',然后再次运行上面的,CONFIG 似乎初始化好了。

我尝试将require 'yaml' 放在 environment.rb 和其他各种配置文件中,但没有成功。

【问题讨论】:

  • 你需要在你的 environment.rb 文件中吗?如果没有,请将该行放在 config/initializers/ 文件夹中的文件中。
  • @fanta 谢谢。我试过把它放在 environment.rb 和 application.rb 中,以及 config/initializers/ 中提到 CONFIG 的每个文件
  • 哦,所以,您需要在初始化文件中使用 CONFIG 常量吗?然后尝试将该行放入该文件夹中的第一个初始化文件中,假设您将该文件命名为 00_config_initializer.rb , 以便它在需要该常量的所有其他初始化程序文件之前运行。
  • 感谢@fanta 的建议,但仍然遇到同样的错误:/

标签: ruby-on-rails ruby rake yaml


【解决方案1】:

这是因为environment.rb 文件没有从 Rake 任务中加载。您可以通过查看Rakefile 轻松跟踪它。它加载config/application 文件而不是config/environment。无需初始化应用程序即可执行 Rake 任务。

最简单的解决方案是将CONFIG 常量移动到模块下的config/application 文件中(请记住,在其他地方使用它可能需要命名空间)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 2012-12-30
    相关资源
    最近更新 更多