Rails - Mina - не удается загрузить переменные среды в файл database.yml

Мина не может загружать переменные среды, которые находятся в файле database.yml, как указано ниже:

deploy.rb:

task :deploy => :environment do
  deploy do
    # Put things that will set up an empty directory into a fully set-up
    # instance of your project.
    invoke :'git:clone'
    invoke :'deploy:link_shared_paths'
    invoke :'bundle:install'
    invoke :'rails:db_migrate'
    queue! "#{rake} db:seed"
    invoke :'rails:assets_precompile'
    invoke :'deploy:cleanup'
  end
end

vim ~ / .bash_profile:

export MYSQLUSERNAME=mysql_user_name
export MYSQLPASSWORD=mysql_password

database.yml:

production:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: my_db_name
  pool: 5
  username: <%= ENV['MYSQLUSERNAME'] %>
  password: <%= ENV['MYSQLPASSWORD'] %>

Ошибка:

$ mina deploy
  .....
  .......
  -----> DB migrations unchanged; skipping DB migration
         $ RAILS_ENV="production" bundle exec rake db:seed
         rake aborted!
         Mysql2::Error: Access denied for user 'root'@'localhost' (using password: NO)
               /home/user_name/.rvm/gems/ruby-2.0.0-p247/gems/mysql2-0.3.16/lib/mysql2/client.rb:70:in `connect'

Примечание. Если я заменю имя пользователя (mysql_user_name) и пароль (mysql_user_name) вместо ‹% = ENV ['MYSQLUSERNAME']%> и‹% = ENV ['MYSQLPASSWORD']%> в базе данных. yml, он работает хорошо.

Может ли кто-нибудь помочь мне, как я могу загрузить переменные ENV в файл * .yml при развертывании с использованием Mina.

Спасибо!


person Peter Prabu    schedule 29.01.2015    source источник
comment
У вас есть эти переменные env на целевой машине, на которой вы развертываете? При развертывании он, скорее всего, просто скопирует файл database.yml на сервер, а затем попытается запустить приложение. В этом случае переменные среды должны быть доступны для этого сеанса bash на удаленном сервере.   -  person Frost    schedule 29.01.2015
comment
@Frost Да, у меня есть эти переменные env на целевой машине. Проблема в том, что при развертывании самого проекта возникает ошибка.   -  person Peter Prabu    schedule 30.01.2015
comment
Есть обновления здесь?   -  person Ngoral    schedule 10.07.2018
comment
О, видел проблему на github. Не могли бы вы разместить здесь ответ, пожалуйста?   -  person Ngoral    schedule 10.07.2018


Ответы (2)


Может быть, поздно, но это может помочь другим пользователям.

Для развертываний я использую Figaro gem, который позволяет настроить набор переменных среды. в одном файле YML. Эти переменные используются одинаково.

Например:

YML:

MY_ENVIRONMENT_VARIABLE: 'Hi there!'

Файл приложения Ruby:

<%= ENV['MY_ENVIRONMENT_VARIABLE'] %>

Преимущество заключается в том, что вы можете просто скопировать свой файл на сервер с помощью команды SCP (при условии, что вы используете систему * nix), а еще лучше вы можете создать задачу Mina для этого.

person Andrei Helo    schedule 01.06.2016

Вам нужно поместить ваш ENV в файл .bashrc. .bash_profile не загружается, поскольку mina использует неинтерактивную оболочку.

семя здесь: https://stackoverflow.com/a/216204/1339894

person stef    schedule 30.01.2015
comment
Я помещаю свои переменные ENV в файл .bashrc. Все еще та же ошибка. - person Peter Prabu; 30.01.2015
comment
вы используете bash в качестве оболочки по умолчанию на вашем сервере? Я попробовал ту же настройку на своем тестовом сервере, и все прошло ... - person stef; 30.01.2015
comment
Да, я использую bash в качестве оболочки по умолчанию. echo $ 0, что приводит к -bash - person Peter Prabu; 30.01.2015
comment
У меня такая же проблема, вы исправили? - person patrickS; 20.10.2016