0
未定義的方法我在app/misc/dsl/builder.rb
具有此代碼有一個模塊Rails的4:模塊
module Dsl
class Builder
def initialize(context, &block)
return if not block_given?
parent_context = block.binding.eval "self"
parent_context.extend Proxy
parent_context.object = context
parent_context.instance_eval &block
end
end
def self.set_context(context, &block)
Dsl::Builder.new(context, &block)
end
end
注:此目錄misc
在application.rb
config.autoload_paths += Dir[Rails.root.join('app', 'models', '{**/}'),
Rails.root.join('app', 'misc', '{**/}')
]
預裝然後,在文本某處(可以說在foo.rb
)我有這個代碼:
Dsl.set_context(obj) do
#some code with obj receiving messages
end
我們使用的測試堆棧包含Zeus + Guard + Rspec。現在,可以說我的代碼重寫的東西不能正常工作
Dsl.set_context(obj) do
asdqwe #this message does not exists
end
從時間到時間,我收到這個莫名其妙的消息
1) SomeOtherClass search_hash receiving keywords params should query for those keywords
Failure/Error: subject.search_hash
NoMethodError:
undefined method `set_context' for Dsl:Module
# ./app/misc/product_query.rb:116:in `base_search_hash'
# ./app/misc/product_query.rb:25:in `search_hash'
# ./spec/misc/product_query_spec.rb:78:in `block (4 levels) in <top (required)>'
# -e:1:in `<main>'
而不是正確的消息應當關於undefined method asdqwe
有關這個的任何線索?
你重新啓動服務器?鋤頭是你在application.rb中預加載的嗎?看起來好像不是負載。你可以試試'requrie'app/misc/dsl/builder.rb''嗎? – lalo
@lalo剛剛更新了這個問題。我嘗試了'require_relative'app/misc/dsl/builder.rb',然後是,它加載。這似乎是一個加載問題,但無法弄清楚會發生什麼。 – geekazoid