0

我有一个Rails 5应用程序,我正在尝试将我的环境变量存储在非 Heroku 服务器上。

因此,我config/application.yml在生产服务器上创建了一个包含我的环境变量的文件。

但是,当我尝试部署 Rails 应用程序时,部署失败,因为无法访问环境变量。

我错过了什么吗?

4

1 回答 1

0

这个答案已经过测试Capistrano 3.6.1

好吧,在这种情况下,您必须capistrano上传您的application.ymldatabase.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'

这将确保在您部署的尝试在生产服务器中启动您的应用程序之前设置必要的环境变量。

于 2016-11-16T09:14:30.573 回答