我想在 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)
是行不通的,因为它不会获取用户名和密码。