Редактировать: Для ясности я пытаюсь использовать этот вид генератора (т.е. с оператором yield), а не генератор Rails.
У меня есть следующий (упрощенный) mixin инициализатора в проекте Rails, с которым я мог бы помочь. Я хотел создать генератор для отслеживания вызовов API Twitter (это просто для отладки, я знаю о 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, BTW, и в поиске «генераторов в Rails» довольно часто доминирует Rails :: Generator, так что это может быть довольно очевидно. Кроме того, я открыт для более изящных решений этой проблемы, которые я, возможно, пропустил. Спасибо.