ActiveReco<=>
演算子を呼びだそうとしてエラーが発生しているようです。
補完候補は Object#instance_m
から得ているようなので、なぜSymbolが要素として混入するのかが謎だったのですが、どうやら
Arel::Attr
1 PREDICATES= [ 2 :eq, :eq_any, :eq_all, :not_eq, :not_eq_any , :not_eq_all , :lt, :lt_any, 3 :lt_all, :lteq, :lteq_any, :lteq_all, :gt, :gt_any, :gt_all, :gteq, 4 :gteq_any, :gteq_all, :matches, :matches_an y, :matches_al l, :not_matche s, 5 :not_matche s_any, :not_matche s_all, :in, :in_any, :in_all, :not_in, 6 :not_in_any , :not_in_all 7 ] 8 9 Predicatio ns = Class.new do 10 def self.insta nce_method s *args 11 warn "this module is deprecated , please use the PREDICATES constant" 12 PREDICATES 13 end 14 end
このコードを書いた人は instance_m
はStringの配列を返すという事を失念していたようですね。
irb/comple
回避策としては、irb起動時に以下のようなコードを読み込むなどがあります。
1 module Arel 2 class Attribute 3 class Predications 4 def self.insta nce_method s 5 require 'arel/algeb ra/attribu tes/attrib ute' 6 Arel::Attribute::PREDICATES .map(&:to_s) 7 end 8 end 9 end 10 end
追記
この問題は 1.8.x系のRubyでのみ発生するようです。 thanks @a_matsuda!
posted by
genki
on Thu 7 Jul 2011
at 12:47