【发布时间】:2023-03-29 06:52:01
【问题描述】:
开发者! 当我将我的应用程序部署到 heroku 时,我遇到了一个错误。你能帮我解决一下吗?
错误日志:
remote: -----> Preparing app for Rails asset pipeline
remote: Running: rake assets:precompile
remote: rake aborted!
remote: Errno::ENOENT: No such file or directory - bs_fetch:open_current_file:open
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.8/lib/bootsnap/compile_cache/yaml.rb:51:in `fetch'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.8/lib/bootsnap/compile_cache/yaml.rb:51:in `block in install!'
remote: /tmp/build_c3974d76/config/initializers/load_authentication_details.rb:1:in `<main>'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `load'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:59:in `load'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:318:in `block in load'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:291:in `load_dependency'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:318:in `load'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/engine.rb:666:in `block in load_config_initializer'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/notifications.rb:182:in `instrument'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/engine.rb:665:in `load_config_initializer'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/engine.rb:625:in `block (2 levels) in <class:Engine>'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/engine.rb:624:in `each'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/engine.rb:624:in `block in <class:Engine>'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/initializable.rb:32:in `instance_exec'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/initializable.rb:32:in `run'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/initializable.rb:61:in `block in run_initializers'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/initializable.rb:50:in `each'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/initializable.rb:50:in `tsort_each_child'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/initializable.rb:60:in `run_initializers'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/application.rb:363:in `initialize!'
remote: /tmp/build_c3974d76/config/environment.rb:5:in `<main>'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/bootsnap-1.4.8/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/zeitwerk-2.4.0/lib/zeitwerk/kernel.rb:34:in `require'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:324:in `block in require'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:291:in `load_dependency'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3.3/lib/active_support/dependencies.rb:324:in `require'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/application.rb:339:in `require_environment!'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/railties-6.0.3.3/lib/rails/application.rb:523:in `block in run_tasks_blocks'
remote: /tmp/build_c3974d76/vendor/bundle/ruby/2.6.0/gems/sprockets-rails-3.2.2/lib/sprockets/rails/task.rb:61:in `block (2 levels) in define'
remote: Tasks: TOP => environment
remote: (See full trace by running task with --
假设
我在 config 目录中有一个 yml 文件,用于存储一些敏感数据。 我在 config/initializers 中有一个 load_authentication_details.rb 文件,用于将详细信息(api_key)加载到 rails 应用程序,内容:
AUTH_DETAILS = YAML.load_file("#{Rails.root}/config/authentication_details.yml")
也许问题出在这个文件(load_authentication_details.rb)的内容上。请你帮我弄清楚吗?
【问题讨论】:
-
这有什么改变吗:
YAML.load_file(File.join(Rails.root, 'config', 'authentication_details.yml') -
错误告诉你
yml文件不存在。当您在开发终端中运行YAML.load_file("#{Rails.root}/config/authentication_details.yml")时,您会得到什么? -
@Chiperific,你好!同样的错误,如果我像你在第一条评论中所说的那样写。如果在 Rails 控制台中我写了 AUTH_DETAILS 常量,它会给我我的 api_key 的值。如果我在终端运行 YAML.load_file("#{Rails.root}/config/authentication_details.yml") 它会给我错误 bash: syntax error near unexpected token `"#{Rails.root}/config/authentication_details.yml "'
-
bash:syntax error:要运行YAML.load_file("#{Rails.root}/config/authentication_details.yml"),您首先必须在Rails 环境中。首先运行rails console,然后运行YAML命令,看看会发生什么。 -
所以它在开发中按预期工作。这让我认为该文件在生产中不存在,因为您已将其列入您的
.gitignore文件的黑名单。
标签: ruby-on-rails ruby heroku deployment