私は2つの別々のモジュールに2つのクラスを持っています(私は今のところそれが良い使い方ではないことを知っています:/)私はこのようなものを持っています:
module MQ
class Client
def self.start(opts = {})
new(opts).start
end
def initialize(queue, message)
@template_message = message
@queue = queue
end
def start
EventMachine.run do
#some code to send message via AMQP
Signal.trap("INT") { connection.close { EventMachine.stop { exit } }}
Signal.trap("TERM") { connection.close {EventMachine.stop { exit(0) } }}
Signal.trap("INFO") { puts "Current active statements: #{statements.keys.inspect}" }
end
end
def stop
EventMachine.stop
end
end
end
次に、Server クラスを定義しました。
module Esper
class Server
def self.start(opts = {})
new(opts).start
end
def initialize(options)
end
def start
EventMachine.run do
#some code here to receive messages
Signal.trap("INT") { connection.close { EventMachine.stop { exit } }}
Signal.trap("TERM") { connection.close {EventMachine.stop { exit(0) } }}
Signal.trap("INFO") { puts "Current active statements: #{statements.keys.inspect}" }
end
end
def stop
EventMachine.stop
end
end
end
今、私はrspecを持っています(そしてここにエラー報告があります):
context "matched messages" do
before :each do
@template_message = { }
@server = Esper::Server.new
@client = MQ::Client.new("queue_name", @template_message)
end
describe "transfer" do
it "should receive statements" do
Thread.new do
@server.start
end
Thread.new do
@client.start
end
puts "Sleep for 6 seconds"
sleep(6.0)
#some check here
@server.stop
@client.stop # and here it reports when I am trying to access nil class in class client in method stop.
end
end
呼び出そうとするとClient
、メソッドのクラスで報告され
ますstop
EventMahine.stop
undefined method `stop' for nil:NilClass
どこが間違っているのか、それを修正する方法について何か提案があれば教えてもらえますか?