我有一个Rails 5
应用程序,我正在尝试将我的环境变量存储在非 Heroku 服务器上。
因此,我config/application.yml
在生产服务器上创建了一个包含我的环境变量的文件。
但是,当我尝试部署 Rails 应用程序时,部署失败,因为无法访问环境变量。
我错过了什么吗?
我有一个Rails 5
应用程序,我正在尝试将我的环境变量存储在非 Heroku 服务器上。
因此,我config/application.yml
在生产服务器上创建了一个包含我的环境变量的文件。
但是,当我尝试部署 Rails 应用程序时,部署失败,因为无法访问环境变量。
我错过了什么吗?
这个答案已经过测试
Capistrano 3.6.1
好吧,在这种情况下,您必须capistrano
上传您的application.yml
(database.yml
如果它被忽略git
)。
# 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'
这将确保在您部署的尝试在生产服务器中启动您的应用程序之前设置必要的环境变量。