我的系统是macOX Mojave 10.14
MySQL是MySQL:8.0.16
我的database.yml
是:
development:
adapter: mysql2
encoding: utf8
database: dev_database
reconnect: false
pool: 5
username: <%= ENV['RAILS_DEV_DB_USSERNAME'] %>
password: <%= ENV['RAILS_DEV_DB_PASSWORD'] %>
socket: /tmp/mysql.sock
,我已经确认该变量是否有效。使用
命令行:erb config / database.yml
我可以得到:
development:
adapter: mysql2
encoding: utf8
database: dev_database
reconnect: false
pool: 5
username: root
password: Wle3S#23sv
socket: /tmp/mysql.sock
但是当我启动rails s -e developent
并浏览到页面时,无法连接到数据库。
我现在该怎么办?
答案 0 :(得分:0)
正如作者arpiagar建议rails 3, how use an ENV config vars in a Settings.yml file?检查他的例子(26)
在.yml文件中引入scriptlet标记时,它更多是erb模板。因此,请先将其作为erb模板阅读,然后加载yml
您可以使用dotenv或figaro宝石(受十二因子应用方法启发)来加载环境变量。
例如,如果您使用dotenv gem
By default, load will look for a file called .env in the current working directory. Pass in multiple files and they will be loaded in order. The first value set for a variable will win.
require 'dotenv'
Dotenv.load('file1.env', 'file2.env')
HOSTNAME = ENV['HOSTNAME']
更多信息,请检查以下提到的链接