gpt4 book ai didi

ruby-on-rails - 半固定 : Missing `secret_key_base` for 'production' environment

转载 作者:数据小太阳 更新时间:2023-10-29 06:51:31 32 4
gpt4 key购买 nike

我从头开始创建了一个 Rails 应用程序 (Rails 4.1.0),但我遇到了一个我无法解决的问题。我已经安装并配置了 Apache 乘客模块,它工作正常。每当我尝试访问虚拟主机时,我都会收到错误 500:

Missing secret_key_base for 'production' environment, set this value in config/secrets.yml

secret.yml 文件包含以下配置:

secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

即使不推荐我这样做:

    production:
secret_key_base: XXXXXXXXXXXXXXXXXXXXXXXXXXXX (random key)

但是 Apache 日志显示:

# tailf /etc/httpd/logs/error_log
[Tue May 06 12:56:18 2014] [error] [client 192.168.3.1] Premature end of script headers:
App 4405 stderr: [ 2014-05-06 12:56:18.5763 4421/0x9d48bdc(Worker 1) utils.rb:68 ]: *** Exception RuntimeError in Rack application object (Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml`) (process 4421, thread 0x9d48bdc(Worker 1)):
App 4405 stderr: from /usr/local/rvm/gems/ruby-2.1.1/gems/railties-4.1.0/lib/rails/application.rb:440:in `validate_secret_key_config!'
App 4405 stderr: from /usr/local/rvm/gems/ruby-2.1.1/gems/railties-4.1.0/lib/rails/application.rb:195:in `env_config'
App 4405 stderr: from /usr/local/rvm/gems/ruby-2.1.1/gems/railties-4.1.0/lib/rails/engine.rb:510:in `call'
App 4405 stderr: from /usr/local/rvm/gems/ruby-2.1.1/gems/railties-4.1.0/lib/rails/application.rb:144:in `call'
App 4405 stderr: from /usr/local/rvm/gems/ruby-2.1.1/gems/passenger-4.0.41/lib/phusion_passenger/rack/thread_handler_extension.rb:74:in `process_request'
App 4405 stderr: from /usr/local/rvm/gems/ruby-2.1.1/gems/passenger-4.0.41/lib/phusion_passenger/request_handler/thread_handler.rb:141:in `accept_and_process_next_request'
App 4405 stderr: from /usr/local/rvm/gems/ruby-2.1.1/gems/passenger-4.0.41/lib/phusion_passenger/request_handler/thread_handler.rb:109:in `main_loop'
App 4405 stderr: from /usr/local/rvm/gems/ruby-2.1.1/gems/passenger-4.0.41/lib/phusion_passenger/request_handler.rb:448:in `block (3 levels) in start_threads'

我该如何解决这个错误?如何访问开发环境?我的意思是我如何编写代码、在我的浏览器中进行测试然后部署到 Heroku 或只是在生产环境中进行测试?

更新

我设法通过在 VirtualHost 上设置 RailsEnv development 来修复上述错误,但现在我得到了另一个错误:

SQLite3::CantOpenException unable to open database file Rails.root: /var/www/html/moviedb

我正在尝试使用 this GEM用于查询 TheMovieDB 网站并获得结果。关于这个新错误有什么建议吗?

最佳答案

通过 bash 的 Rails 应用 key

如果您有权访问运行 Rails 应用程序的用户bash控制台,并且您没有使用thin,然后你可以通过用户 ~/.bashrc

提供环境变量

只需添加以下内容:

export SECRET_KEY_BASE=`MY_SECRET_KEY`

注意:MY_SECRET_KEY 可以是任何东西,但在 bash 控制台上用 rake secret 生成 key 是安全的,用示例中的“MY_SECRET_KEY”替换那个 key

完成后,您应该会在 hash 中看到一个 SECRET_KEY_BASE 变量,当您在 Rails 控制台中调用 ENV 时会返回该变量。

最后但同样重要的是,重启您的 Rails 应用程序,错误应该消失。

每个 rbenv-vars 的 Rails 应用 key

此外,如果您正在使用 rbenv,您可以使用 rbenv-vars 插件来实现每个 Rails 应用程序的 key 环境变量。

一个很好的读物是here!

使用 god (godrb.com): 感谢 hlcs

你需要上帝终止然后重新开始。

关于ruby-on-rails - 半固定 : Missing `secret_key_base` for 'production' environment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23501329/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com