我有一个Rails 5
应用,我正在尝试将我的环境变量存储在非Heroku服务器上。
因此,我在生产服务器上使用我的环境变量创建了一个config/application.yml
文件。
但是,当我尝试部署我的Rails应用程序时,部署失败,因为无法访问环境变量。
我错过了什么吗?
答案 0 :(得分:0)
使用
测试此答案Capistrano 3.6.1
那么,在这种情况下,您必须capistrano
上传application.yml
database.yml
,如果它被git
忽略的话。{/ p>
# in config/deploy.rb
# Default value for :linked_files is []
append :linked_files, 'config/database.yml', 'config/application.yml'
现在编写一些代码将文件上传到服务器
# lib/capistrano/tasks/uploader.rake
namespace :upload do
desc 'Upload shared files to the server'
task :yml_files do
on roles(:web) do |host|
fetch(:linked_files).each do |common_file|
upload! common_file, "#{fetch(:deploy_to)}/shared/#{common_file}"
end
end
end
end
现在,您需要在特定事件发生之前触发上述capistrano
任务。
# config/deploy.rb
before 'deploy:check:linked_files', 'upload:yml_files'
这将确保在部署尝试在生产服务器中启动应用程序之前设置必要的环境变量。