アーカイブ

子クラスもgettextの対象にしたい。 このエントリーを含むはてなブックマーク はてなブックマーク - 子クラスもgettextの対象にしたい。

2008 年 8 月 12 日 Comments off
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

としたら出るようになったので、ひとまずこれで。

カテゴリー: Rails タグ: