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')
ただし、ユーザー名とパスワードをスクリプト内で直接公開したくはありません。
Mysql2::Client.new()
config/database.yml からすべてのデータを取得してメソッドに渡すにはどうすればよいでしょうか?
ありがとう。
編集
最終的に機能させるために、これを行うことで受け入れられた回答を少し変更したことを明確にしたかっただけです。
client = Mysql2::Client.new(:host => dbconfig['hostname'], :username => dbconfig['username'], :password => dbconfig['password'], :database => dbconfig['database'], :socket => '/tmp/mysql.sock')
ユーザー名とパスワードを取得できないため、単純に実行してMysql2::Client.new(config)
も機能しません。