2011-02-12 66 views
3

我無法爲使用sunspot_rails搜索數據庫編制索引。我得到以下錯誤:Sunspot_Rails Rake在運行Reindex時中止

Execute sunspot:reindex rake aborted! undefined local variable or method 'counter'

運行rake太陽黑子後我得到以下輸出:reindex。我是Rails的新手。我想添加sunspot_rails到我的項目添加搜索功能(希望與Heroku部署項目)。

我正在使用Rails 3.我按照說明在這裏:https://github.com/outoftime/sunspot/blob/master/sunspot_rails/README.rdoc。我的其他各種診斷問題的嘗試包括:

  • 除sunspot_rails外,還安裝了太陽黑子。
  • 我結束了sunspot_rails v。1.2.0和1.2.1,所以我卸載了1.2.1,因爲我有sunspot_rails 1.2.0。
  • 安裝了我認爲是sunspot_rails的依賴關係的nokogiri寶石。
  • 安裝的libxml2分別按照說明此處安裝引入nokogiri:http://www.engineyard.com/blog/2010/getting-started-with-nokogiri/

    **調用黑子:重新索引(FIRST_TIME) **調用環境(FIRST_TIME) **執行環境 **執行黑子:REINDEX耙中止!未定義的局部變量或方法counter' for [removed pound]<Class:0x10359aef8> /Library/Ruby/Gems/1.8/gems/activerecord-3.0.3/lib/active_record/base.rb:1008:in method_missing'/Library/Ruby/Gems/1.8/gems/sunspot_rails-1.2.0/lib/sunspot/rails/searchable.rb:235:in solr_index' /Library/Ruby/Gems/1.8/gems/activerecord-3.0.3/lib/active_record/relation/batches.rb:71:in find_in_batches'/Library/Ruby/Gems/1.8/ gems/activerecord-3.0.3/lib/active_record/base.rb:440:在__send__' /Library/Ruby/Gems/1.8/gems/activerecord-3.0.3/lib/active_record/base.rb:440:in find_in_batches'/Library/Ruby/Gems/1.8/gems/sunspot_rails-1.2.0/lib/sunspot/rails/searchable.rb:234 :solr_index' /Library/Ruby/Gems/1.8/gems/sunspot_rails-1.2.0/lib/sunspot/rails/searchable.rb:184:in solr_reindex'/Library/Ruby/Gems/1.8/gems/sunspot_rails-1.2.0/lib/sunspot/rails/tasks.rb:57/Library/Ruby/Gems/1.8/gems/sunspot_rails-1.2.0/ lib/sunspot/rails/tasks.rb:56:在each' /Library/Ruby/Gems/1.8/gems/sunspot_rails-1.2.0/lib/sunspot/rails/tasks.rb:56 /Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in調用'/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:636:in execute' /Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:in'/ Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:631:在execute' /Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:597:in invoke_with_call_chain'/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/monitor.rb :242:在synchronize' /Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:590:in invoke_with_call_ch ain'/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:583:in invoke' /Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2051:in invoke_task'/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/ rake.rb:2029:top_level' /Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in each'/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2029:in top_level' /Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in standard_exception_handling'/Library/Ruby/Gems/1.8/gems/ rake-0.8.7/lib/rake.rb:2023:在top_level' /Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2001:in運行'/Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:2068:in standard_exception_handling' /Library/Ruby/Gems/1.8/gems/rake-0.8.7/lib/rake.rb:1998:in run'/ Library /紅寶石/寶石/ 1.8 /寶石/耙-0.8.7 /斌/耙:31在/ usr/bin中/耙:19:'負荷」在/ usr/bin中/耙:19

這是什麼我在課堂上想搜索:

searchable do 
    text :fname 
    text :mname 
    text :lname, :default_boost => 2 end 

任何幫助將不勝感激!

回答

2

錯誤發生在sunspot_rails-1.2.0/lib/sunspot/rails/searchable.rb:235代碼中。 你應該自己修復它。

和固定它是很容易:

def solr_index(opts={}) 
     options = { 
     :batch_size => 500, 
     :batch_commit => true, 
     :include => self.sunspot_options[:include], 
     :first_id => 0 
     }.merge(opts) 

     if options[:batch_size] 
     counter = 1 #Add the variable 
     find_in_batches(:include => options[:include], :batch_size => options[:batch_size]) do |records| 
      solr_benchmark options[:batch_size], counter do 
      Sunspot.index(records) 
      end 
      Sunspot.commit if options[:batch_commit] 
      counter += 1 # Increase the variable 
     end 
     Sunspot.commit unless options[:batch_commit] 
     else 
     Sunspot.index!(all(:include => options[:include])) 
     end 
    end 

添加在find_in_batches的前計數器變量,並增加其在find_in_batches塊的末尾。 而這個變量用於基準測試。 別擔心〜

0

這是一個相當及時的干預,user34。

只需安裝Sunspot for Rails 3.0.1從Ubuntu 10.4運行。在重新馴服連接問題之後(Ubuntu用戶需要確保他們有Javascript運行,看起來 - sudo apt-get install default-jdk)之後,我遇到了與'counter'一樣的問題。

這是一個新的太陽黑子問題,我想知道?

無論如何,只要幾個小時之前我就會發布您的答覆,然後我就可以看到它了。就我所知,我現在看起來很好。

多虧了你們兩個..(始終警惕5分鐘安裝索賠的:))

1

只需添加註釋,這是現在固定在黑子1.2.1