2015-10-20 74 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哇...謝謝,那真是太簡單了< –

相關問題