1

私はRubyにかなり慣れていませんが、問題を解決するのに苦労しています。

私の単純なアプリケーションは正常に動作していましたが、Rails のバージョンを 3.2.8 にアップグレードした後、データベースにレコードをクエリしようとすると問題が発生しました。これは、Rails 3.0.7 を使用している場合は正常に機能しますが、Rails 3.2.8 にアップグレードすると、Stack Level too deep エラーで失敗し始めます。

私のモデルは次のようになります。

class Resource < ActiveRecord::Base 
  validates :title, :presence => true, 
                    :length => { :minimum => 5} 
  validates :link,  :presence => true 
  validates :date_submitted,  :presence => true 

  has_many :comments 

  validates_format_of :link, :with => URI::regexp(%w(http https)) 
  validates :link, :uniqueness => {:scope => :link, :message => "This item has already been submitted"} 
end 

コンソールから Resource.all を呼び出すと、次のエラーで失敗します。

SystemStackError: /home/tom/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/irb/workspace.rb:80 からのスタック レベルが深すぎます: IRB のバグかもしれません!!

他のモデルでも同様に発生しているようで、アップグレード前にこれが正常に機能していたという事実は、それが何か別のものであることを示唆しているようです. 誰が私がどこを見なければならないかについての考えを持っていますか - エラー情報はかなり限られています.

更新: もう少し掘り下げた後、Rails 3.2.1 に変更すると、これが壊れ始めたようです。Rails 3.2.0 以下 - 私のアプリケーションは正常に動作します - 3.2.1 以上では、スタック レベルが深すぎる問題が発生します。

更新 2: 問題が見つかりました。問題の原因となっているSearchLogic gem を使用していました。それを GemFile から削除すると、問題が解決しました。

4

0 に答える 0