Rails数据库密码作为环境变量

时间:2018-04-13 10:00:58

标签: ruby-on-rails environment-variables yaml

这有效:

production:
  adapter: mysql2
  encoding: utf8
  host: localhost
  database: myapp
  username: myapp
  password: jksdfUIJsdf

然后在终端touch tmp/restart.txt上。

这不起作用:

production:
  adapter: mysql2
  encoding: utf8
  host: localhost
  database: myapp
  username: myapp
  password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>

然后在终端

export MYAPP_DATABASE_PASSWORD=jksdfUIJsdf
touch tmp/restart.txt

因此,如果我在database.yml文件中将密码设置为明文,那么我的应用程序正常工作但如果我使用export命令将密码设置为环境变量,那么我的应用程序无法正常工作,因为它会丢失错误密码。我正在使用mysql数据库。怎么解决这个问题?

2 个答案:

答案 0 :(得分:0)

对于Rails应用配置,我使用figaro gem.

将以下行添加到Gemfile并执行bundle

gem "figaro"

之后运行以下命令:

bundle exec figaro install

这将创建config/application.yml,并将其添加到.gitignore文件。

现在在config/application.yml内输入凭据。

# config/application.yml

MYAPP_DATABASE_PASSWORD: "2954"

访问the Github page for more info.

答案 1 :(得分:0)

触摸tmp/restart.txt时,您不是在启动新的Rails服务器,而是在告诉现有服务器重新加载自身。现有服务器仍将具有其启动时使用的环境,并且在此之后将永远不会看到您设置的任何环境变量。