如何在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文件,但我只是不确定它是什么。
这里有什么重要的东西吗?任何帮助将非常感激。
谢谢!
答案
我想在这里提供一些提示。
- 你可以通过erb运行database.yml来测试你得到的东西。例如,
erb config/database.yml
。这将帮助您确定问题所在。 - 您可以使用
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迁移
如何使用 database.yml 为每个环境定义 json 文件