【问题标题】:Rails database password as environment variablesRails 数据库密码作为环境变量
【发布时间】:2018-09-23 15:44:36
【问题描述】:

这行得通:

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数据库。如何解决?

【问题讨论】:

  • 如果你在 Rails 控制台中执行 'puts ENV['MYAPP_DATABASE_PASSWORD']' 会发生什么?

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


【解决方案1】:

对于 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.

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-30
      • 2020-08-19
      • 1970-01-01
      • 2012-07-14
      相关资源
      最近更新 更多