[英]Rails - Mina - not able to load environment variables in database.yml file
Mina无法加载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'
注意:如果我在database.yml文件中替换username(mysql_user_name)和密码(mysql_user_name)值而不是<%= ENV ['MYSQLUSERNAME']%>和<%= ENV ['MYSQLPASSWORD']%>,则效果很好。
任何人都可以请帮助我,我可以在部署使用Mina时在* .yml文件中加载ENV变量。
谢谢!
也许迟到了,但这可能有助于其他用户。
对于部署,我使用Figaro gem ,它允许在一个YML文件中配置一组环境变量。 这些变量以相同的方式使用。
例如:
阳明:
MY_ENVIRONMENT_VARIABLE: 'Hi there!'
应用程序Ruby文件:
<%= ENV['MY_ENVIRONMENT_VARIABLE'] %>
优点是您可以使用SCP命令将文件复制到服务器(假设您使用的是* nix系统),更好的是您可以创建一个Mina任务来执行此操作。
您需要将ENV放在.bashrc文件中。 由于mina使用的是非交互式shell,因此未加载.bash_profile。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.