目前,我在rails rake任务中使用pg gem,这非常适合我想做的事情我创建一个变量pg_conn并将连接详细信息传递给PGconn.connect方法我只是不想每次数据库用户名/密码更改时都更改这个rake任务。如何将登录详细信息从yaml文件传递到pg_conn命令请看下面的代码:
namespace :update_table do
task :import => :environment do
$pg_conn = PGconn.connect(host = "samsi-postgres-90s", port = 6433, options = '', tty ='', dbname = "installs", login = "reports_m", password = "password")
my_query = "select * from all_tables"
conn.query(my_query) do |raw_row|
puts raw_row
end
end
end
理想情况下,我希望将凭证详细信息的哈希值传递给pg_conn连接变量,如下所示:
$pg_conn = PGconn.connect(yamlfile[:host], yamlfile[:port], '', '', yamlfile[:database], yamlfile[:username], yamlfile[:password])
我该怎么做谢谢你的帮助!
最佳答案
对于Rails3,您可以在rake任务中使用Rails.configuration:
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"]
只需确保在rake任务中继承环境,比如
task :users => :environment do