У меня есть следующие строки кода, которые я использую в качестве Фабрики для создания объектов:
class ServiceProcessor
def self.create(service, logger)
classified_name = service.name.to_s.split('_').collect! { |w| w }.join << "Processor"
logger.warn "Creating service proc, classified name: #{classified_name}"
service_proc = Object.const_get(classified_name).new
... check respond_to etc.
return service_proc
Первая строка может быть нечетной, ее необходимо реорганизовать.Я могу использовать эти строки для создания различных процессоров:
class AlphaProcessor < ServiceProcessor
class BetaProcessor < ServiceProcessor
etc...
Таким образом, эти процессоры могут быть созданы в моих спецификациях и через консоль.Они также могут быть созданы в граблях - но только некоторые из них.Два из них терпят неудачу:
WARN 2012-01-27 08:54:18 -0800 (25626) Creating service proc,
classified name: AlphaProcessor
ERROR 2012-01-27 08:54:18 -0800 (25626)
Failed for service #<Service _id: 4f203c171d41c83b3b000003, _type: nil,
deleted_at: nil, name: "Alpha", enabled: true>
ERROR 2012-01-27 08:54:18
-0800 (25626) Exception: uninitialized constant AlphaProcessor ERROR
2012-01-27 08:54:18 -0800 (25626) Backtrace:
["/mnt/hgfs/kodiak/lib/service_processors/_service_processor.rb:33:in
`const_get'",
"/mnt/hgfs/kodiak/lib/service_processors/_service_processor.rb:33:in
`create'", "/mnt/hgfs/kodiak/lib/update_engine.rb:28:in `block in
update_all'",
Итак, вопрос в том, как мне выяснить, почему эти два (из 9) потерпят неудачу, но только в Rake? Iвидно, что Rake и консоль загружают одну и ту же среду (несколько puts
в environment.rb), поэтому я сомневаюсь, что это так.Я озадачен тем, что может быть причиной этого или где искать.