我有一个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”。
任何人都可以帮我识别我在这里缺少的东西吗?我正在绞尽脑汁,在网上搜索,似乎无法找到我的解决方案。
答案 0 :(得分:0)
试试这个
production:
secret_key_base: Rails.application.secrets.SECRET_KEY_BASE