如何在database.yml文件中设置rails环境变量?

Mar*_*ark 14 ruby yaml ruby-on-rails environment-variables

在我的本地机器上,我想为database.yml文件中的所有敏感信息设置环境变量.我的文件看起来像这样:

default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: <%= ENV['DATABASE_USERNAME'] %> 
  password: <%= ENV['DATABASE_PASSWORD'] %>
  socket: <%= ENV['SOCKET'] %>

development:
  <<: *default
  database: <%= ENV['DEVELOPMENT_DATABASE'] %>

test:
  <<: *default
  database: #JetStreamIQ-2_0_test

production:
  <<: *default
  database: <%= ENV['PRODUCTION_DATABASE'] %>
  username: <%= ENV['DATABASE_USERNAME'] %> 
  password: <%= ENV['DATABASE_PASSWORD'] %>
Run Code Online (Sandbox Code Playgroud)

我以为我可以在我的.bashrc文件中设置这些环境变量,但这似乎不起作用.我的.bashrc文件如下所示:

export DATABASE_USERNAME="root"
export DATABASE_PASSWORD="*****"
export SOCKET="/var/run/mysqld/mysqld.sock"
export DEVELOPMENT_DATABASE="shoppe_development"
export PRODUCTION_DATABASE="#"
Run Code Online (Sandbox Code Playgroud)

当我运行我的服务器时

rails s
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息:

Access denied for user 'root'@'localhost' (using password: YES)
Run Code Online (Sandbox Code Playgroud)

我知道数据库用户名和密码存在问题,因为我已经配置了我的database.yml文件,但我只是不确定它是什么.

这里有什么重要的东西吗?任何帮助将非常感激.

谢谢!

小智 28

我想在这里提供一些提示.

  1. 你可以通过erb运行database.yml来测试你得到的东西.例如,erb config/database.yml.这将帮助您确定问题所在.

  2. 您可以使用该set命令查找shell中设置的每个环境变量.这将允许您确认您正在设置的环境变量(in .bashrc).

希望这是有帮助的.

  • 这是'erb config/database.yml'命令的一个很酷的技巧.我不知道你能做到这一点.当我运行该命令时,它显示我已定义环境变量的所有字段都是空的. (3认同)

Phi*_*rom 1

这是一个错字还是您确实设置了JETSTREAMIQ_DATABASE_PASSWORD但然后DATABASE_PASSWORD在您的中使用database.yml?因为那样就可以了。

您可以直接使用命令行应用程序使用实际值连接到 mysql 吗mysql