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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在database.yml文件中设置rails环境变量?相关的知识,希望对你有一定的参考价值。

在我的本地机器上,我想为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'] %>

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

export DATABASE_USERNAME="root"
export DATABASE_PASSWORD="*****"
export SOCKET="/var/run/mysqld/mysqld.sock"
export DEVELOPMENT_DATABASE="shoppe_development"
export PRODUCTION_DATABASE="#"

当我运行我的服务器时

rails s

我收到一条错误消息:

Access denied for user 'root'@'localhost' (using password: YES)

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

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

谢谢!

答案

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

  1. 你可以通过erb运行database.yml来测试你得到的东西。例如,erb config/database.yml。这将帮助您确定问题所在。
  2. 您可以使用set命令查找shell中设置的每个环境变量。这将允许您确认正在设置的环境变量(在.bashrc中)。

希望这是有帮助的。

另一答案

事实证明,在我编辑了我的bashrc文件之后,我需要退出该终端会话并打开另一个终端以完成更改:/我完成后我的应用程序启动完美。

另一答案

这是一个错字还是你真的设置JETSTREAMIQ_DATABASE_PASSWORD然后在你的DATABASE_PASSWORD使用database.yml?因为那会这样做。

你能直接使用mysql命令行应用程序使用实际值连接到mysql吗?

另一答案

如果您不想重新启动终端,则只需执行.bashrc文件:

source /path/to/.bashrc

在与rails服务器相同的终端中。

以上是关于如何在database.yml文件中设置rails环境变量?的主要内容,如果未能解决你的问题,请参考以下文章

在 Rails 项目中忽略 .gitignore config/database.yml

在标准“生产”或“开发”之外的不同数据库上使用Rails迁移

在 rails 3 中设置记录器

如何使用 database.yml 为每个环境定义 json 文件

为 Ruby on Rails Database.yml 文件正确配置 MySQL

Rails:如何在 ActiveRecord 中设置默认值?