gpt4 book ai didi

Ruby 脚本使用没有 Rails 的 database.yml 连接到 Mysql2

转载 作者:数据小太阳 更新时间:2023-10-29 06:58:13 26 4
gpt4 key购买 nike

我想在 Ruby 脚本中使用 mysql2 gem 连接到 mysql 数据库,但没有 Rails 或 ActiveRecord,但要读取 config/database.yml 文件以免暴露用户名称和密码直接在 Ruby 脚本中。如果我像这样使用 ActiveRecord,我可以连接:

dbconfig = YAML::load(File.open('config/database.yml'))
ActiveRecord::Base.establish_connection( dbconfig['production'] )

但是如果我对 Mysql2 连接尝试同样的技巧,我会得到一个错误:

client = Mysql2::Client.new(dbconfig['production'])

显然语法不同,我需要这样的东西:

client = Mysql2::Client.new(:host => "localhost", :username => "user", :password => 'password', :database => 'db', :socket => '/tmp/mysql.sock')

但是不想直接在脚本内部暴露用户名和密码。

那么我如何从 config/database.yml 中获取所有数据并将其传递给 Mysql2::Client.new() 方法?

谢谢。

编辑

只是想澄清一下,为了最终让它发挥作用,我通过这样做对接受的答案进行了一些修改:

client = Mysql2::Client.new(:host => dbconfig['hostname'], :username => dbconfig['username'], :password => dbconfig['password'], :database => dbconfig['database'], :socket => '/tmp/mysql.sock')

简单地执行 Mysql2::Client.new(config) 是行不通的,因为它不会获取用户名和密码。

最佳答案

任何接受哈希的方法都可以提供 YAML 解析的结果。

你可能有两个问题:

下面的代码应该可以工作:

config = YAML::load_file("config/database.yml")["development"]
config["host"] = config["hostname"]

client = Mysql2::Client.new(config)

关于Ruby 脚本使用没有 Rails 的 database.yml 连接到 Mysql2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12688478/

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