ruby-on-rails - 你能在 Rails 中获取数据库用户名、密码、数据库名称吗?

标签 ruby-on-rails ruby database activerecord environment

我正在编写一个 rake 任务,它在 Rails/ActiveRecord 之外执行一些数据库工作。

有没有办法获取database.yml中定义的当前环境的数据库连接信息(主机、用户名、密码、数据库名称)?

我想得到它,这样我就可以用它来像这样连接......

con = Mysql.real_connect("host", "user", "pw", "current_db")

最佳答案

在 Rails 中,您可以创建一个配置对象并从中获取必要的信息:

config   = Rails.configuration.database_configuration
host     = config[Rails.env]["host"]
database = config[Rails.env]["database"]
username = config[Rails.env]["username"]
password = config[Rails.env]["password"]

参见 documentation对于 Rails::Configuration 的详细信息。

这只使用 YAML::load从数据库配置文件 (database.yml) 加载配置,您可以自己使用该文件从 rails 环境外部获取信息:

require 'YAML'
info = YAML::load(IO.read("database.yml"))
print info["production"]["host"]
print info["production"]["database"]
...

关于ruby-on-rails - 你能在 Rails 中获取数据库用户名、密码、数据库名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/399396/

相关文章:

database - 如何清除 Laravel 8 中数据库设置的缓存?

ruby-on-rails - 在大型 Rails 应用程序中加速 RSpec 测试

ruby-on-rails - Rails 4. 模型中的国家/地区验证

mysql - 使用 postmeta 和 usermeta 的最佳方法? (Wordpress、Mysql 数据库)

ruby-on-rails - ajax, link_to remote 在 ruby​​ on rails 中

ruby - 如何从 Ruby 检查具有特定 pid 的进程是否正在运行?

mysql - 从 txt 文件向 MySQL 添加新行

ruby-on-rails - STI 和 form_for 问题

ruby-on-rails - 类型错误 : expected numeric

ios - Facebook SDK iOS 连接的 Rails-api 身份验证?