1

キャリアウェーブタイヤジェムの両方を使用しているアプリケーションがあります。私が遭遇している問題は、私がやろうとすると、次のようrake environment tire:import CLASS=Website FORCE=true --traceになります。

** 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

タイヤと搬送波の間にはある種の衝突があるようです。Webサイトモデルから削除するmount_uploader :screenshot, ScreenshotUploaderと、rakeコマンドは成功します。これの原因と可能な解決策についてのアイデアはありますか?

4

1 に答える 1

4

両方のgemで使用されているserializable_hashメソッドと競合しているようです。Tireは、Carrierwaveによって上書きされるto_hashメソッドでserializable_hashを使用します。これが少しお役に立てば幸いです。

# 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

私はそれがうまくいくことを願っています

于 2012-04-07T21:11:56.290 に答える