2

Railsコントローラーがあります:

class Console::AccesorBillsController < ConsoleController
  ...
  def bill
    AcceccorBill.new.run

    render :nothing => true
  end
end

そこに新しいモデルを作成し、bunny のページ ( http://rubybunny.info/articles/getting_started.html )の例を使用してメソッドを実行します。

require "bunny"

class AcceccorBill
  def initialize()
  end

  def run
    conn = Bunny.new
    conn.start

    ch  = conn.create_channel
    x   = ch.fanout("nba.scores")

    ch.queue("joe",   :auto_delete => true).bind(x).subscribe do |delivery_info, metadata, payload|
      puts "#{payload} => joe"
    end

    ch.queue("aaron", :auto_delete => true).bind(x).subscribe do |delivery_info, metadata, payload|
      puts "#{payload} => aaron"
    end

    ch.queue("bob",   :auto_delete => true).bind(x).subscribe do |delivery_info, metadata, payload|
      puts "#{payload} => bob"
    end

    x.publish("BOS 101, NYK 89").publish("ORL 85, ALT 88")

    conn.close
  end
end

しかし、私はいつもこのエラーを受け取ります:

NameError - uninitialized constant AcceccorBill::Bunny:
  (gem) activesupport-3.1.12/lib/active_support/dependencies.rb:507:in `load_missing_constant'
  (gem) activesupport-3.1.12/lib/active_support/dependencies.rb:181:in `block in const_missing'
  (gem) activesupport-3.1.12/lib/active_support/dependencies.rb:179:in `const_missing'
  (gem) rake-0.9.2.2/lib/rake/ext/module.rb:36:in `const_missing'
  app/ext/acceccor_bill.rb:6:in `initialize'
  app/controllers/console/accesor_bills_controller.rb:17:in `bill'
  (gem) actionpack-3.1.12/lib/action_controller/metal/implicit_render.rb:4:in `send_action'
  (gem) actionpack-3.1.12/lib/abstract_controller/base.rb:167:in `process_action'
  (gem) actionpack-3.1.12/lib/action_controller/metal/rendering.rb:10:in `process_action'

誰もそれを解決する方法を知っていますか?

PS: バンドラー経由で gem をインストールしましたが、require動作しないようです。

4

1 に答える 1

3

解決しました。

bundlerを要求するのを忘れていました。だから私はファイルの先頭にこれを追加しました:

require "bundler/setup"
require "bunny"

それだけです。

于 2013-07-04T11:56:20.787 に答える