如何在非Heroku服务器上使用Figaro存储环境变量?

时间:2016-11-14 14:03:44

标签: ruby-on-rails figaro-ruby

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

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

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

我错过了什么吗?

1 个答案:

答案 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'

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