Redmine の送信メールの日本語化
王道は Redmine に Ruby-GetText で、確かにこれで、本文も ISO-2022-JP になるし、ヘッダ部分も ISO-2022-JP の MIME エンコードになる。
参考にしたのは下記のサイト。
猫派 |redmine 0.8でメール文字化けの対応しました
で、満足していたのが、突然、奈落のそこに...
きっかけは、パスワードを忘れたユーザが、ログイン画面にある「パスワードの再発行」からメールアドレスを入力をして「変更」ボタンを押したら、Internal Error 発生。
これだけならあまり問題じゃないんだけど、今度はチケットを登録しようとして発生したユーザが現れた。自分が使う分には問題が無かったのと、上記の対策をやった後に追加されたユーザで起きたことから、どうも GetText が怪しい。
で、Rails のログを見ると、
NameError (uninitialized constant GetText::Rails::SecretKeyGenerator):
2つのケースとも上記のログを吐いている。
いやぁ、はっきり言って Rails や Ruby には全然明るくないし、まともに原因を追うのは絶望的で、GetText はやめちゃおうかと思いながら、問題が発生している場所のソースコード(app/model/token.rb)を凝視。
def self.generate_token_value s = Rails::SecretKeyGenerator.new(object_id).generate_secret s[0, 40] end
GetText を使うから、「Rails::SecretKeyGenerator」が「GetText::Rails::SecretKeyGenerator」になるのは、なんとなく分かるんだけど、じゃぁ、なんで「GetText::Rails::SecretKeyGenerator」だと「uninitialized constant」になるのかが分からない。
で、「どうせ Rails::SecretKeyGenerator って GetText とは関係ないだろう」と割り切って、「GetText::」が付かないようにする方法がないかなぁ、と思って、
s = ::Rails::SecretKeyGenerator.new(object_id).generate_secret
としてみた。
ビンゴ!
でも、本当にこの対処が正しいかはよく分からない(^^;