“从申请收到的答复不完整”。无法让SECRET_KEY_BASE在Cap部署的Rails应用程序上运行。

时间:2015-06-07 23:07:23

标签: ruby-on-rails ruby-on-rails-4

我有一个Rails(4.2.1)应用程序,我通过Capistrano部署到VPS。我在服务器上设置了环境变量SECRET_KEY_BASE(在/ etc / environment文件中)。当我在服务器上运行“env”时,我能够查看SECRET_KEY_BASE记录......

SECRET_KEY_BASE=fa091be2d168da5f943a0a83f9b2...

我还在此文件中保存了其他变量,例如数据库用户名,密码等。当我在服务器上运行“env”时,所有这些变量都可见。

我的secretts.yml文件设置为默认设置:

production:
  secret_key_base: <%= ENV['SECRET_KEY_BASE'] %> 

同样,我在其他地方使用环境变量...例如我的database.yml文件:

default: &default
  adapter: postgresql
  encoding: unicode
  pool: 5
  username: <%= ENV['PSQL_DATABASE_USERNAME'] %>
  password: <%= ENV['PSQL_DATABASE_PASSWORD'] %>

当我部署应用程序时,我收到一条消息,指出“从应用程序收到的响应不完整”。每次审查SO和其他网站,我试图在框上运行'rake secret'并重新启动应用程序。这样做解决了我的问题。奇怪的是,我的所有数据库连接和我的ENV变量的所有其他引用都在工作,但由于某种原因,secret_key_base不接受我的ENV变量。一旦我再次进行部署,我的秘密密钥库就会被删除,我不得不再次手动SSH服务器和“rake secret”。

任何人都可以帮我识别我在这里缺少的东西吗?我正在绞尽脑汁,在网上搜索,似乎无法找到我的解决方案。

1 个答案:

答案 0 :(得分:0)

试试这个

 production:
  secret_key_base: Rails.application.secrets.SECRET_KEY_BASE