gpt4 book ai didi

mysql - 如何通过yaml文件在rails中加载配置变量

转载 作者:太空宇宙 更新时间:2023-11-03 16:45:51 31 4
gpt4 key购买 nike

我正在尝试在 config/database.yml 中使用环境变量。

这是我的local_env.yml:

# Local Environment Variables
MYSQL_SOCK: "/tmp/mysql.sock"

然后我用 rails console 检查它是否正确,果然:

>> irb(main):002:0> ENV["MYSQL_SOCK"]
=> "/tmp/mysql.sock"

但是在 config/database.yml 中:

default: &default
adapter: mysql2
socket: ENV["MYSQL_SOCK"]

我收到以下错误:

Mysql2::Error: Can't connect to local MySQL server through socket 'ENV["MYSQL_SOCK"]' (2)

但是……

default: &default
adapter: mysql2
socket: "/tmp/mysql.sock"

有效!

出了什么问题?

最佳答案

这种做法通常用于定义配置变量,如应用程序 ID、 key 、s3 凭证等,并且此文件放在 .gitignore 中。

使用settings.yml(通常)或local_env.yml 创建一个yml 文件。然后根据环境定义 key 。

development:
MYSQL_SOCK: "/tmp/mysql.sock"
production:
MYSQL_SOCK: "file path here"

然后通过初始化器加载它。 在您的初始化程序目录中创建一个名为“0_load_config.rb”的文件。在文件名中添加“0”是因为该文件应首先加载,然后再加载其他初始化程序。

然后在常量中加载local_env.yml文件

LOCAL_ENV = YAML.load_file("#{Rails.root}/config/local_env.yml")[Rails.env]

然后您可以在您的应用程序中访问这个变量。您也可以通过 Rails 控制台进行检查:

LOCAL_ENV["MYSQL_SOCK"]

它将为您提供您在 local_env.yml 中提供的值,即“/tmp/mysql.sock”。

关于mysql - 如何通过yaml文件在rails中加载配置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33052049/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com