编辑:为了清楚起见,我试图用这个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