首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >你能在Rails中获得DB用户名,pw,数据库名吗?

你能在Rails中获得DB用户名,pw,数据库名吗?
EN

Stack Overflow用户
提问于 2008-12-30 10:37:33
回答 6查看 74.6K关注 0票数 156

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

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

我想得到它,这样我就可以用它来连接了。

代码语言:javascript
复制
con = Mysql.real_connect("host", "user", "pw", "current_db")
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-12-30 02:47:41

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

代码语言:javascript
复制
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 for Rails::Configuration。

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

代码语言:javascript
复制
require 'YAML'
info = YAML::load(IO.read("database.yml"))
print info["production"]["host"]
print info["production"]["database"]
...
票数 259
EN

Stack Overflow用户

发布于 2010-11-17 01:54:14

Bryan在上面的评论中的回答值得更多的关注:

代码语言:javascript
复制
>> Rails.configuration.database_configuration[Rails.env]
=> {"encoding"=>"unicode", "username"=>"postgres", "adapter"=>"postgresql", "port"=>5432, "host"=>"localhost", "password"=>"postgres", "database"=>"mydb", "pool"=>5}
票数 159
EN

Stack Overflow用户

发布于 2019-03-18 22:41:43

我认为这是最简单的解决方案。经过一些测试(至少在Rails 5.2中),这将正确地解析DATABASE_URL。

代码语言:javascript
复制
 ActiveRecord::Base.configurations[Rails.env]
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/399396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档