Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 缺少秘密令牌,即使在环境变量上设置了它_Ruby On Rails_Environment Variables - Fatal编程技术网

Ruby on rails 缺少秘密令牌,即使在环境变量上设置了它

Ruby on rails 缺少秘密令牌,即使在环境变量上设置了它,ruby-on-rails,environment-variables,Ruby On Rails,Environment Variables,我已通过运行以下命令生成本地密钥: rake secret 然后在我的Ubuntu VPS中,我创建了如下环境变量: echo 'export SECRET_KEY_BASE=<locally_generated_secret_string>' >> ~/.bashrc 当我键入echo$SECRET\u KEY\u BASE时,它会将生成的字符串输出给我 然后我通过capistrano上传了我的rails应用程序并启动了它。但是,日志仍显示此错误消息: #<R

我已通过运行以下命令生成本地密钥:

rake secret
然后在我的Ubuntu VPS中,我创建了如下环境变量:

echo 'export SECRET_KEY_BASE=<locally_generated_secret_string>' >> ~/.bashrc
当我键入
echo$SECRET\u KEY\u BASE
时,它会将生成的字符串输出给我

然后我通过capistrano上传了我的rails应用程序并启动了它。但是,日志仍显示此错误消息:

#<RuntimeError: Missing `secret_token` and `secret_key_base` for 'production' environment, set these values in `config/secrets.yml`>
#

为什么会发生这种情况?

这可能是因为您的应用程序中还没有设置这种情况的地方

如果您检查
config/secrets.yml
文件,您会注意到
secret\u key\u base
已为
开发
测试
设置,如下所示:

development:
  secret_key_base: *******...

test:
  secret_key_base: *******...
但可能不适用于
生产

然后,您需要做的是为
生产
环境添加配置。因此,在
secrets.yml
文件中,您将看到如下内容:

development:
  secret_key_base: *******...

test:
  secret_key_base: *******...

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
  secret_token: <%= ENV["SECRET_TOKEN"] %>
开发:
秘密密钥库:********。。。
测试:
秘密密钥库:********。。。
制作:
机密密钥库:
秘密令牌:
通过将
secret\u-key\u-base
设置为
ENV[“secret\u-key\u-base”]
,它将能够获得您导出到环境中的值,
secret\u-token
也是如此


希望这能有所帮助。

这可能是因为应用程序中还没有设置此选项的地方

如果您检查
config/secrets.yml
文件,您会注意到
secret\u key\u base
已为
开发
测试
设置,如下所示:

development:
  secret_key_base: *******...

test:
  secret_key_base: *******...
但可能不适用于
生产

然后,您需要做的是为
生产
环境添加配置。因此,在
secrets.yml
文件中,您将看到如下内容:

development:
  secret_key_base: *******...

test:
  secret_key_base: *******...

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
  secret_token: <%= ENV["SECRET_TOKEN"] %>
开发:
秘密密钥库:********。。。
测试:
秘密密钥库:********。。。
制作:
机密密钥库:
秘密令牌:
通过将
secret\u-key\u-base
设置为
ENV[“secret\u-key\u-base”]
,它将能够获得您导出到环境中的值,
secret\u-token
也是如此

希望这有帮助