2012-04-01 2 views
2

나는 carrierwave & tire 보석을 모두 사용하는 응용 프로그램을 가지고 있습니다.반송파 및 타이어 충돌

** Invoke environment (first_time) 
** Execute environment 
** Invoke tire:import (first_time) 
** Execute tire:import 
[IMPORT] Deleting index 'websites' 
[IMPORT] Creating index 'websites' with mapping: 
{"website":{"properties":{"id":{"type":"integer"},"title":{"type":"string"}}}} 
[IMPORT] Starting import for the 'Website' class 
-------------------------------------------------------------------------------- 
2/2 | 100% rake aborted!############################################## 
undefined method `[]' for nil:NilClass 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/carrierwave-0.6.0/lib/carrierwave/orm/activerecord.rb:49:in `block in serializable_hash' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/carrierwave-0.6.0/lib/carrierwave/orm/activerecord.rb:48:in `each' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/carrierwave-0.6.0/lib/carrierwave/orm/activerecord.rb:48:in `serializable_hash' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/tire-0.4.0/lib/tire/model/search.rb:270:in `to_hash' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/tire-0.4.0/lib/tire/model/search.rb:164:in `to_indexed_json' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/tire-0.4.0/lib/tire/model/search.rb:290:in `to_indexed_json' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/tire-0.4.0/lib/tire/index.rb:306:in `convert_document_to_json' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/tire-0.4.0/lib/tire/index.rb:76:in `block in bulk_store' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/activerecord-3.2.2/lib/active_record/relation/delegation.rb:6:in `map' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/activerecord-3.2.2/lib/active_record/relation/delegation.rb:6:in `map' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/tire-0.4.0/lib/tire/index.rb:68:in `bulk_store' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/tire-0.4.0/lib/tire/index.rb:113:in `import' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/tire-0.4.0/lib/tire/tasks.rb:83:in `block (3 levels) in <top (required)>' 
/Users/Kyle/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/benchmark.rb:295:in `realtime' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/tire-0.4.0/lib/tire/tasks.rb:69:in `block (2 levels) in <top (required)>' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/task.rb:203:in `call' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/task.rb:203:in `block in execute' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain' 
/Users/Kyle/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/bin/rake:19:in `load' 
/Users/Kyle/.rvm/gems/ruby-1.9.3-p125/bin/rake:19:in `<main>' 
Tasks: TOP => tire:import 

타이어 및 반송파 사이의 갈등의 일종이 될 것 같다 : 내가 얻을 rake environment tire:import CLASS=Website FORCE=true --trace을 할 때 내가 실행 해요 문제입니다. 내 웹 사이트 모델에서 mount_uploader :screenshot, ScreenshotUploader을 제거하면 rake 명령이 성공합니다. 이 아이디어의 원인에 대한 아이디어와 가능한 해결책은 무엇일까요?

+0

이 CarrierWave 0.6.1로 업데이트하시기 바랍니다 작동 희망,이 문제는 다른 일이 수정되었습니다. – bensie

+0

문제에 대한 링크가 있고 # 또는 github에서 요청 #을 요청 하시겠습니까? –

+0

https://github.com/jnicklas/carrierwave/pull/681 – bensie

답변

4

두 보석에서 모두 사용하는 serializable_hash 메소드와 충돌이있는 것 같습니다. Tire는 to_hash 메서드에서 serializable_hash를 사용하며 Carrierwave로 덮어 씁니다. 나는 이것이 조금 도움이되기를 바랍니다.

# tire-0.4.0/lib/tire/model/search.rb:270 
... 
def to_hash 
    self.serializable_hash 
... 

# carrierwave-0.6.0/lib/carrierwave/orm/activerecord.rb:46 
... 
def serializable_hash(options=nil) 
... 

편집

당신이 (추한) 해결 방법을 시도 할 수 있습니다. 당신의 웹 사이트 모델에이 넣어 :

def to_hash 
    self.serializable_hash_copy 
end 

def serializable_hash_copy(options = nil) 
    options = options.try(:clone) || {} 

    options[:except] = Array.wrap(options[:except]).map { |n| n.to_s } 
    options[:except] |= Array.wrap(self.class.inheritance_column) 

    super(options) 
end 

을 나는 그것이

+0

이것은 Carrierwave의 v0.6.1에서 수정되었지만 올바른 방향으로 나를 가리켜 주셔서 감사합니다! –