class Curry < ActiveRecord::Base
end
class SeafoodCurry < Curry
end
class VegetableCurry < Curry
end
という関係のクラスがあって、
GetText.update_pofiles
でmsgidを抽出しようとしたのだけれど、対象となったのはCurryのみでSeafoodCurryとVegetableCurryは対象とならなかった。
このままではなにかと不便なので原因を追ってみました。
以下追跡ログ。キーとなった箇所は強調してあります。
gettext-1.92.0/lib/gettext/utils.rb
132 rgettext(files, refpot)
gettext-1.92.0/lib/gettext/rgettext.rb
241 file.puts generate_pot(parse(targetfiles))
170 @ex_parsers.each do |klass|
171 if klass.target?(file)
35 ["active_record.rb", "ActiveRecordParser"],
gettext-1.92.0/lib/gettext/parser/active_record.rb
135 if @ar_re =~ v
67 @ar_re = /class.*(#{@config[:activerecord_classes].join("|")})/
27 :activerecord_classes => ["ActiveRecord::Base"],
ここまで。1.92.0ではclass定義の開始行に"ActiveRecord::Base"があるか否かで対象を判断しているようでした。
ancestorsを使って判断するように変えてみようとしたのだけれど想像以上にふくらんでしまい挫折。
class SeafoodCurry < Curry # < ActiveRecord::Base
end
としたら出るようになったので、ひとまずこれで。