Ruby on rails Rails:NameError:未初始化的常量Rails::Application::YAML
我试图将我的应用程序部署到heroku,但出现了此错误。我一直在谷歌上搜索,没有看到任何人有YAML问题,所以我想我在网上问一下。任何帮助都将不胜感激Ruby on rails Rails:NameError:未初始化的常量Rails::Application::YAML,ruby-on-rails,ruby,heroku,Ruby On Rails,Ruby,Heroku,我试图将我的应用程序部署到heroku,但出现了此错误。我一直在谷歌上搜索,没有看到任何人有YAML问题,所以我想我在网上问一下。任何帮助都将不胜感激 remote: -----> Preparing app for Rails asset pipeline remote: Running: rake assets:precompile remote: rake aborted! remote: NameError: uninitializ
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)
我不太清楚发生了什么事,但我做了一个调查
require 'yaml'
在我的production.rb文件中,它成功了。我不知道为什么它是工作,但会更新,如果我发现 rails的某些版本(据我所知,4.2.1和4.2.2)中有一个bug,错误消息第一行的文件中缺少
require'yaml'
语句。在VPS上,您可以自己插入,但我不知道如何使用Heroku。
当我在GitHub上提出它时,有人建议我升级到下一个rails版本 为了安全起见,我在development.rb、production.rb和test.rb中添加了
要求“yaml”
。现在一切正常。Ruby 2.3.3和Rails 4.2.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 3.2或Rails 4.2上,在config/application.rb
中添加以下内容:
require 'yaml'
require 'yaml'
就这些
我希望这有帮助@muistoshort不确定我是否理解这个问题。我有一个database.yml和secrets.yml文件以及en.yml文件运行rails应用程序目录中的
grep-r YAML config
,在config/
文件夹中查找YAML
的任何实例。
require 'yaml'