編輯:爲了清楚起見,我試圖用這個kind of generator(即用'yield'語句)而不是Rails生成器。在Rails(而不是Rails :: Generator)中使用Ruby生成器的錯誤
我有一個Rails項目中的以下(簡化)初始化mixin,我可以使用一些幫助。我想要做的是創建一個生成器來跟蹤Twitter API調用(這只是爲了調試,我知道rate_limit_status)。
require 'generator'
# Be sure to restart your server when you modify this file.
module TwitterMixin
def get_auth
@auth ||= Twitter::HTTPAuth.new(ENV['TWITTER_USER'], ENV['TWITTER_PASS'])
end
def count
@counter ||= generator.new
@counter.yield
end
def client
p "#{count} Twitter API calls this iteration"
@client ||= Twitter::Base.new(get_auth)
end
end
的問題是,我發現了以下錯誤:
dlopen(/Users/john/.gem/ruby/1.8/gems/json-1.2.0/ext/json/ext/generator.bundle, 9): no suitable image found. Did find:
/Users/john/.gem/ruby/1.8/gems/json-1.2.0/ext/json/ext/generator.bundle: mach-o, but wrong architecture - /Users/john/.gem/ruby/1.8/gems/json-1.2.0/ext/json/ext/generator.bundle
這似乎是使用JSON發電機,這可能是一個更封閉範圍的衝突。 主要問題是如何確保一個Ruby標準庫類(特別是生成器類)被調用?
我還是Ruby的新手,順便說一下,搜索「Rails中的生成器」相當佔優於Rails :: Generator,所以這可能相當明顯。此外,我願意爲我可能錯過的這個問題提供更優雅的解決方案。謝謝。
生成器是Ruby 1.8標準庫的一部分,如果有任何用處,那麼http://ruby-doc.org/stdlib/libdoc/generator/rdoc/index.html上有一些文檔。但它不在1.9,但我還沒有完全明白爲什麼。 – 2010-01-27 19:03:28
我想這是因爲你可以直接使用yield嗎?不知道你如何繼承它。可能只是將構建良率轉化爲像Python這樣的類的方法。 – JohnMetta 2010-01-28 04:34:42