ruby-on-rails - `secret_key_base` 环境缺少 'production',请在 Ubuntu 服务器上的 config/secrets.yml 中设置此值

标签 ruby-on-rails digital-ocean ubuntu-server rvm-capistrano

所以在 Ubuntu 服务器上,我在我的日志中得到了这个:

#<RuntimeError: Missing `secret_key_base` for 'production' 
       environment, set this value in `config/secrets.yml`>
      /home/deploy/apps/project/shared/bundle/ruby/2.4.0/gems/railties-5.1.4/lib/rails/application.rb:510:in `validate_secret_key_config!'
      /home/deploy/apps/project/shared/bundle/ruby/2.4.0/gems/railties-5.1.4/lib/rails/application.rb:247:in `env_config'```

我的浏览器:
An unhandled lowlevel error occurred. The application logs may have details.

我的secrets.yml(在deploy/apps/project/current/config & deploy/apps/project/shared/config):
production:
      secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

部署文件
...
namespace :deploy do
    desc 'Rails Secrets'
    task :secret do
      on roles(:app) do
        execute "export SECRET_KEY_BASE=`bundle exec rake secret`"
      end
    end
    before :finishing,  :secret
    ...
end

我也试过手动添加 SECRET_KEY_BASE/etc/profile .当我输入这个命令时它存在:printenv (因为是我手动添加的),但是退出时root它不再存在于 printenv .

ENV 变量不存在于 printenv 中命令。在我进行部署之后 ( cap production deploy:initial )。

如何解决此错误?

最佳答案

似乎您登录的用户与您用来添加 keystore 的用户不同。您以 root 身份登录,但我认为您没有使用 root 部署或启动服务器, 对?

如果您使用名为 deploy 的用户进行部署也就是说,您应该以 deploy 的身份登录并将环境变量添加到部署的上下文(例如 ~/.bashrc )。我不是 100% 确定 /etc/profile会在这里工作。另外,记得在添加 var 后重新启动 rails 服务器

关于ruby-on-rails - `secret_key_base` 环境缺少 'production',请在 Ubuntu 服务器上的 config/secrets.yml 中设置此值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50603623/

相关文章:

javascript - 如何使用 JavaScript 包含 Django 静态 URL?

ubuntu - 为什么 virtualenv workon 不带我到 env 目录

php-7 - 如何在 Ubuntu 服务器 16.04 上启用 PCNTL

django - uwsgi导入错误: No module named os

php - 简单的广告服务器

ruby-on-rails - 打开 dump.rdb 时 Redis 权限被拒绝

meteor - 为什么我在运行 'mup deploy' : "build: You' re not in a Meteor project directory"? 时收到此错误

ruby-on-rails - 在 ruby​​ on Rails 中放置生成报告的所有逻辑的最佳位置是什么?

mysql - 您的 config/database.yml 可能编写不正确。请检查并修复任何错误

ruby-on-rails - 通过 =yield 在部分内呈现内容