Rey*_*rPM 8 ruby ruby-on-rails heroku ruby-on-rails-4
我从头开始创建了一个rails应用程序(Rails 4.1.0),我遇到了一个我无法解决的问题.我已经安装并配置了Apache Passenger Module,它工作正常.每当我尝试访问虚拟主机时,都会收到错误500:
Missing secret_key_base for 'production' environment, set this value in config/secrets.yml
Run Code Online (Sandbox Code Playgroud)
secret.yml文件包含以下配置:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
Run Code Online (Sandbox Code Playgroud)
即使我不建议我这样做:
production:
secret_key_base: XXXXXXXXXXXXXXXXXXXXXXXXXXXX (random key)
Run Code Online (Sandbox Code Playgroud)
但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'
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个错误?我如何访问开发环境?我的意思是我如何编写代码,在浏览器中测试然后部署到Heroku或只是在生产环境中进行测试?
更新
我设法通过设置RailsEnv developmentVirtualHost 来修复上面的错误,但现在我得到了另一个错误:
SQLite3 :: CantOpenException无法打开数据库文件Rails.root:/ var/www/html/moviedb
我正在尝试使用此GEM对TheMovieDB网站进行查询并获得结果.有关此新错误的任何建议吗?
mah*_*ich 19
通过bash Rails app密钥
如果您可以访问运行rails应用程序的用户的bash控制台,并且您没有使用,那么您可以通过用户提供环境变量thin~/.bashrc
只需添加以下内容:
export SECRET_KEY_BASE=`MY_SECRET_KEY`
Run Code Online (Sandbox Code Playgroud)
注意:MY_SECRET_KEY可以是任何东西,但是rake secret在bash控制台上生成一个键可以安全地替换该示例中带有"MY_SECRET_KEY"的键.
完成后,您应该看到在rails控制台中调用时返回的SECRET_KEY_BASE变量.hashENV
最后但并非最不重要的是,重启rails应用程序,错误应该消失.
每个rbenv-vars的Rails app密钥
此外,如果您正在使用rbenv,则可以使用该rbenv-vars插件来获得每个应用程序密钥环境变量.
关于这个的好读物就在这里!
使用god(godrb.com):感谢hlcs
你需要god terminate然后重新开始.
小智 4
我做了什么:在我的生产服务器上,我为 Thin (我正在使用它)创建一个配置文件 (confthin.yml) 并添加以下信息:
环境:生产用户:www-data 组:www-data SECRET_KEY_BASE:mysecretkeyproduct
然后我启动应用程序
瘦启动 -C /whereeveristhefieonprod/configthin.yml
像魅力一样工作,然后不需要版本控制上的密钥
希望它能有所帮助,但我相信独角兽和其他人也可以做同样的事情。
| 归档时间: |
|
| 查看次数: |
22328 次 |
| 最近记录: |