我正在尝试编写一个独立的脚本,这样我就可以运行一个常规的cron作业来更新数据库,并将一些数据缓存到本地文件中,这样我们就不必等待查询时间了。这样做,我正在使用ActiveRecord。我有以下代码:
require "active_record"
require "rubygems"
require "./lib/queries/my_query_file"
def my_method
#get stored query string in my_query_file
sql = MY_QUERY
@sql_con = ActiveRecord::Base.establish_connection(
:adapter => "sqlserver",
:host => "my_host",
:port => "my_port",
:username => "my_user",
:password => "my_pass",
:database => "my_db",
:timeout => "100000"
)
@@query_result = @sql_con.connection.select_all(sql)
@@query_result.each do |row|
#do something
end
end
当我尝试运行上面的脚本时,我收到以下错误:
为数据库适配器指定'sqlserver',但未加载gem。将
gem ''
添加到您的Gemfile中。 (GEM :: LoadError)
对这个问题有什么看法?我已经用尽了我的搜索选项,以至于我在寻找答案时感到头疼。我终于屈服于发布一个问题,看看是否有任何专家提供帮助,或者在此之前遇到此问题的人可能会回想起解决方案。
答案 0 :(得分:1)
您正在使用:adapter => " sqlserver",这使得ruby假设sqlserver是您尝试使用的数据库。它试图查找具有sqlserver适配器连接的ruby gem。
当我们使用mysql gem时,我们可以看到用C编写的库扩展可以帮助我们通过端口连接到当前的mysql服务器。
答案 1 :(得分:0)
这有点蹩脚。我尝试了user944938的建议,并且有效。我只是希望我可以使用ActiveRecord,因为这是我在其他地方使用的。我现在更新了我的代码:
要求" tiny_tds" 要求" ./ lib / queries / my_query_file"
def my_method
sql = MY_QUERY
client = TinyTds::Client.new(
:username => "my_user",
:password => "my_pass",
:host => "my_host",
:database => "my_db"
)
@@build_query = client.execute(sql)
@@build_query.each do |row|
#do something
end
end