Rails:NameError:未初始化常量Rails :: Application :: YAML

4
我试图将我的应用程序部署到Heroku,但出现了这个错误。我已经在谷歌上搜索过了,没有看到任何关于YAML问题的解决方案,所以想在网上寻求帮助。非常感谢您的帮助。
 remote: -----> Preparing app for Rails asset pipeline
 remote:        Running: rake assets:precompile
 remote:        rake aborted!
 remote:        NameError: uninitialized constant Rails::Application::YAML
 remote:        /tmp/build_78ce680a858c094f796e2b21b5bb1826/vendor/bundle/ruby/2.0.0/gems/railties-4.2.0/lib/rails/application.rb:377:in `secrets'
 remote:        /tmp/build_78ce680a858c094f796e2b21b5bb1826/config/environments/production.rb:2:in `block in <top (required)>'
 remote:        /tmp/build_78ce680a858c094f796e2b21b5bb1826/vendor/bundle/ruby/2.0.0/gems/railties-4.2.0/lib/rails/railtie.rb:210:in `instance_eval'
 remote:        /tmp/build_78ce680a858c094f796e2b21b5bb1826/vendor/bundle/ruby/2.0.0/gems/railties-4.2.0/lib/rails/railtie.rb:210:in `configure'
 remote:        /tmp/build_78ce680a858c094f796e2b21b5bb1826/config/environments/production.rb:1:in `<top (required)>'
 remote:        /tmp/build_78ce680a858c094f796e2b21b5bb1826/vendor/bundle/ruby/2.0.0/gems/railties-4.2.0/lib/rails/engine.rb:598:in `block (2 levels) in <class:Engine>'
 remote:        /tmp/build_78ce680a858c094f796e2b21b5bb1826/vendor/bundle/ruby/2.0.0/gems/railties-4.2.0/lib/rails/engine.rb:597:in `each'
 remote:        /tmp/build_78ce680a858c094f796e2b21b5bb1826/vendor/bundle/ruby/2.0.0/gems/railties-4.2.0/lib/rails/engine.rb:597:in `block in <class:Engine>'
 remote:        /tmp/build_78ce680a858c094f796e2b21b5bb1826/vendor/bundle/ruby/2.0.0/gems/railties-4.2.0/lib/rails/initializable.rb:30:in `instance_exec'
 remote:        /tmp/build_78ce680a858c094f796e2b21b5bb1826/vendor/bundle/ruby/2.0.0/gems/railties-4.2.0/lib/rails/initializable.rb:30:in `run'
 remote:        /tmp/build_78ce680a858c094f796e2b21b5bb1826/vendor/bundle/ruby/2.0.0/gems/railties-4.2.0/lib/rails/initializable.rb:55:in `block in run_initializers'
 remote:        /tmp/build_78ce680a858c094f796e2b21b5bb1826/vendor/bundle/ruby/2.0.0/gems/railties-4.2.0/lib/rails/initializable.rb:44:in `each'
 remote:        /tmp/build_78ce680a858c094f796e2b21b5bb1826/vendor/bundle/ruby/2.0.0/gems/railties-4.2.0/lib/rails/initializable.rb:44:in `tsort_each_child'
 remote:        /tmp/build_78ce680a858c094f796e2b21b5bb1826/vendor/bundle/ruby/2.0.0/gems/railties-4.2.0/lib/rails/initializable.rb:54:in `run_initializers'
 remote:        /tmp/build_78ce680a858c094f796e2b21b5bb1826/vendor/bundle/ruby/2.0.0/gems/railties-4.2.0/lib/rails/application.rb:352:in `initialize!'
 remote:        /tmp/build_78ce680a858c094f796e2b21b5bb1826/config/environment.rb:5:in `<top (required)>'
 remote:        /tmp/build_78ce680a858c094f796e2b21b5bb1826/vendor/bundle/ruby/2.0.0/gems/railties-4.2.0/lib/rails/application.rb:328:in `require'
 remote:        /tmp/build_78ce680a858c094f796e2b21b5bb1826/vendor/bundle/ruby/2.0.0/gems/railties-4.2.0/lib/rails/application.rb:328:in `require_environment!'
 remote:        /tmp/build_78ce680a858c094f796e2b21b5bb1826/vendor/bundle/ruby/2.0.0/gems/railties-4.2.0/lib/rails/application.rb:443:in `block in run_tasks_blocks'
 remote:        /tmp/build_78ce680a858c094f796e2b21b5bb1826/vendor/bundle/ruby/2.0.0/gems/sprockets-rails-2.3.1/lib/sprockets/rails/task.rb:64:in `block (2 levels) in define'
 remote:        Tasks: TOP => environment
 remote:        (See full trace by running task with --trace)

查看我的 Heroku 日志

 2015-06-07T00:58:16.085579+00:00 heroku[slug-compiler]: Slug compilation started
 2015-06-07T00:58:16.085600+00:00 heroku[slug-compiler]: Slug compilation failed: failed to compile Ruby app

@muistooshort,我不太确定我理解这个问题。我有一个database.yml和secrets.yml文件,以及en.yml文件。 - kkomaz
1
在你的Rails应用程序目录下运行grep -r YAML config命令,以查找config/文件夹中任何YAML实例。 - Prakash Murthy
4个回答

7

我不太确定发生了什么,但我做了一次

require 'yaml'

在我的production.rb文件中,它可以工作。我不知道为什么它能工作,但如果我找到原因,我会更新的。

1

一些版本的Rails存在一个bug(我知道的是4.2.1和4.2.2),在错误消息的第一行缺少require 'yaml'语句。在VPS上,您可以自己插入它,但我不确定如何在Heroku上操作。

当我在GitHub上提出这个问题时,有人建议我升级到下一个Rails版本...


0

我在development.rb、production.rb和test.rb中添加了require 'yaml',只是为了保险起见。现在运行良好。Ruby 2.3.3和Rails 4.2.0。


0

我在使用 Docker 运行一个遗留的 Rails 2.3 应用程序时遇到了问题。

每当我使用命令 docker-compose up 启动应用程序时,都会遇到这个错误:

web_1  | App 61 output: Error: The application encountered the following error: uninitialized constant YAML (NameError)
web_1  | App 61 output:     /workdir/config/environment.rb:13:in `block in <top (required)>'
web_1  | App 61 output:     /usr/local/bundle/bundler/gems/rails-3ce754b1f962/railties/lib/initializer.rb:113:in `run'
web_1  | App 61 output:     /workdir/config/environment.rb:3:in `<top (required)>'
web_1  | App 61 output:     config.ru:2:in `require'
web_1  | App 61 output:     config.ru:2:in `block in <main>'
web_1  | App 61 output:     /usr/local/bundle/gems/rack-1.4.7/lib/rack/builder.rb:51:in `instance_eval'
web_1  | App 61 output:     /usr/local/bundle/gems/rack-1.4.7/lib/rack/builder.rb:51:in `initialize'
web_1  | App 61 output:     config.ru:1:in `new'
web_1  | App 61 output:     config.ru:1:in `<main>'
web_1  | App 61 output:     /usr/local/bundle/gems/passenger-6.0.5/src/helper-scripts/rack-preloader.rb:101:in `eval'
web_1  | App 61 output:     /usr/local/bundle/gems/passenger-6.0.5/src/helper-scripts/rack-preloader.rb:101:in `preload_app'
web_1  | App 61 output:     /usr/local/bundle/gems/passenger-6.0.5/src/helper-scripts/rack-preloader.rb:189:in `block in <module:App>'
web_1  | App 61 output:     /usr/local/bundle/gems/passenger-6.0.5/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb:378:in `run_block_and_record_step_progress'
web_1  | App 61 output:     /usr/local/bundle/gems/passenger-6.0.5/src/helper-scripts/rack-preloader.rb:188:in `<module:App>'
web_1  | App 61 output:     /usr/local/bundle/gems/passenger-6.0.5/src/helper-scripts/rack-preloader.rb:30:in `<module:PhusionPassenger>'
web_1  | App 61 output:     /usr/local/bundle/gems/passenger-6.0.5/src/helper-scripts/rack-preloader.rb:29:in `<main>'
web_1  | [ E 2020-10-25 17:55:09.8091 27/Tc age/Cor/App/Implementation.cpp:221 ]: Could not spawn process for application /workdir: The application encountered the following error: uninitialized constant YAML (NameError)
以下是我如何解决的:

Rails 2.3中,在config/environment.rb中添加以下内容:

require 'yaml'

在 Rails 3.2 或 Rails 4.2 中,将以下内容添加到您的 config/application.rb 文件中:
require 'yaml'

就是这样了。

希望这能帮到你


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接