2015-10-20 72 views
0

[Rails 4]您好。我正在创建一个web应用程序。这是Rails 4.此外,该项目不使用ActiveRelations或数据库。然而,它正在处理一个预先存在的M $ _SQL DB,我使用我发现的名为tiny_tds的gem进行查询。当从控制器调用方法时,获取“未初始化的常量”错误,但不通过控制台

我有一个错误,我已经变得非常坚持。

基本上,我的模式是“网络”类,它看起来是这样的:

应用程序/模型/ network.rb

class Network 

include Query #THIS IS MY CONCERN MODULE (SHOWN BELOW) 

include ActiveModel::Conversion 
include ActiveModel::Validations 
extend ActiveModel::Naming 

... 

def initialize() 
    @technology = "CDMA" 
    @sites  = [] 
end 

... 

def get_sites() 
    #Custom query - this calls the Query Module 
    @sites = Query.query_avg(@technology, @s_range, @e_range) 

end 

... 

end 

这个类调用我创建并停留在一个模块/关注文件夹。它依赖于“tiny_tds”gem,这是一个用于查询M $ _SQL DB的gem。它令人惊讶的效果很好,直到我试图把它与轨道整合:

应用程序/模型/顾虑/ query.rb

module Query 

extend ActiveSupport::Concern 

def self.query_avg(tech, s_date, e_date) 

    q_string = "..." #custom sql string (omitted for brevity) 

    return execute(q_string) #return to calling class 

end 

private 

    def self.execute(sql) 

     #This is a TinyTds Specific command (where error is seen) 
     client = TinyTds::Client.new(username: '...', password: '...', host: 'x.x.x.x') 
     result = client.execute(sql) 
     results = result.each(:symbolize_keys => true, :as => :array, :cache_rows => true, :empty_sets => true) do |rowset| end 

     return results 
    end 

end 

最后但并非最不重要的,这里是调用代码控制器:

应用程序/控制器/ networks_controller.rb

class NetworksController < ApplicationController 
    def new 
    @network = Network.new 
    d1 = Date.new(2014,11,22) 
    d2 = Date.new(2014,11,30) 
    @network.date_range(d1,d2) 
    @network.get_sites 
end 

现在...上面的代码(在控制器中)工作良好,当我加载“轨道控制台”,我在那里手动输入。所有的数据都是我想要的。

然而,当我尝试调用http://localhost:3000/networks/new(即使是空的观点),我收到以下错误在我的浏览器:

uninitialized constant Query::TinyTds 

...(inside the query.rb module listed above)... 

client = TinyTds::Client.new(username: '...', password: '...', host: 'x.x.x.x') 

PS。我兰特捆绑安装和验证tiny_tds宝石已安装。

所有帮助表示赞赏,谢谢!

+1

您需要重新启动您的服务器, – BroiSatse

+0

OH哇...谢谢,那太简单了< –

回答

1

添加新的gem后,您总是需要重新启动服务器。 Gems在应用程序启动时加载,不是自动加载的主题。

+0

OH哇...谢谢,那真是太简单了< –

相关问题