2016-11-14 3 views
0

У меня есть приложение Rails 5, и я пытаюсь сохранить свои переменные окружения на сервере без Heroku.Как хранить переменные среды с Figaro на сервере без Heroku?

Поэтому я создал файл config/application.yml с моими переменными окружения на рабочем сервере.

Однако, когда я пытаюсь развернуть приложение Rails, развертывание завершается с ошибкой, так как переменные среды недоступны.

Я что-то упустил?

+0

Вы используете 'capistrano' в качестве инструмента развертывания? – illusionist

+0

@illusionist, да я – Toontje

ответ

0

Этот ответ испытывается 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' 

Это позволит убедиться, что необходимые переменные окружения установлены до того, как развернутые попытки загружают ваше приложение на рабочем сервере.