0

【Rails4】こんにちは。私はウェブアプリを作成中です。これはRails 4です。また、このプロジェクトはActiveRelationsやデータベースを使用していません。ただし、tiny_tds という名前の宝石を使用してクエリを実行する既存の M$_SQL DB で動作しています。

私は非常に立ち往生しているというエラーが発生しています。

基本的に、私のモデルは次のような「ネットワーク」クラスです。

アプリ/モデル/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

このクラスは、私が作成して /concerns フォルダーに保存したモジュールを呼び出します。これは、M$_SQL DB のクエリに使用される gem である「tiny_tds」gem に依存しています。Railsと統合しようとするまでは、驚くほどうまく機能していました。

アプリ/モデル/懸念/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

最後になりましたが、コードを呼び出すコントローラーは次のとおりです。

app/controllers/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

さて...上記のコード(コントローラー内)は、「rails console」をロードしてそこに手動で入力するとうまく機能します。すべてのデータはまさに私が欲しいものです。

ただし、 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。bundle install を実行し、tiny_tds gem がインストールされていることを確認しました。

すべての助けに感謝します、ありがとう!

4

1 に答える 1