Ruby on rails NameError:运行rake db:create(YAML)时未初始化contant配置
我正在尝试让一个应用程序的本地实例运行,我一直在Ruby on rails NameError:运行rake db:create(YAML)时未初始化contant配置,ruby-on-rails,ruby,rake,yaml,Ruby On Rails,Ruby,Rake,Yaml,我正在尝试让一个应用程序的本地实例运行,我一直在 NameError: uninitialized constant CONFIG 当我运行bundle exec rake db:setup时 以下是my environment.rb文件中的CONFIG外观: CONFIG = YAML.load(File.read('/etc/twkeys/university/course_scheduler/config.yml')).freeze 当我在控制台中测试上述内容时,我得到 NameErr
NameError: uninitialized constant CONFIG
当我运行bundle exec rake db:setup时
以下是my environment.rb文件中的CONFIG
外观:
CONFIG = YAML.load(File.read('/etc/twkeys/university/course_scheduler/config.yml')).freeze
当我在控制台中测试上述内容时,我得到
NameError: uninitialized constant YAML
如果在控制台中运行require'yaml'
,然后再次运行上述操作,CONFIG
似乎初始化为ok
我曾尝试将
require'yaml'
放入environment.rb和其他各种配置文件中,但没有成功。这是因为environment.rb
文件不是从Rake任务加载的。您可以通过查看Rakefile
轻松跟踪它。它加载config/application
文件,而不是config/environment
。执行Rake任务不需要初始化应用程序
最简单的解决方案是将
CONFIG
常量移动到模块下的CONFIG/application
文件中(记住,在其他地方使用它可能需要名称空间)。这是因为environment.rb
文件不是从Rake任务加载的。您可以通过查看Rakefile
轻松跟踪它。它加载config/application
文件,而不是config/environment
。执行Rake任务不需要初始化应用程序
最简单的解决方案是将
CONFIG
常量移动到模块下的CONFIG/application
文件中(记住,在其他地方使用它可能需要名称空间)。您的environment.rb文件中需要它吗?如果不需要,请将该行放在CONFIG/initializers/文件夹的文件中。@fanta谢谢。我试着把它放在environment.rb和application.rb中,以及config/initializers/中提到configoh的每个文件中,所以,你需要在初始化器文件中使用config常量?,然后试着把这一行放在初始化器文件中,这是文件夹中的第一行,比如说你把这个文件命名为00_config_initializer.rb,因此,它会在需要该常量的所有其他初始值设定项文件之前运行。谢谢您的建议@fanta仍然会收到相同的错误:/you needed in your environment.rb file?如果不需要,请将该行放在config/initializers/文件夹中的一个文件中。@fanta谢谢。我试着把它放在environment.rb和application.rb中,以及config/initializers/中提到configoh的每个文件中,所以,你需要在初始化器文件中使用config常量?,然后试着把这一行放在初始化器文件中,这是文件夹中的第一行,比如说你把这个文件命名为00_config_initializer.rb,因此,它会在需要该常量的所有其他初始值设定项文件之前运行。感谢@fanta的建议,但仍然会出现相同的错误:/