Hatena::ブログ(Diary)

JULYの日記

2009-07-01 Redmine にチャレンジ中

[]Redmine の送信メール日本語化

王道RedmineRuby-GetText で、確かにこれで、本文も ISO-2022-JP になるし、ヘッダ部分も ISO-2022-JPMIME エンコードになる。

参考にしたのは下記のサイト

猫派 |redmine 0.8でメール文字化けの対応しました

で、満足していたのが、突然、奈落のそこに...

きっかけは、パスワードを忘れたユーザが、ログイン画面にある「パスワードの再発行」からメールアドレス入力をして「変更」ボタンを押したら、Internal Error 発生。

これだけならあまり問題じゃないんだけど、今度はチケットを登録しようとして発生したユーザが現れた。自分が使う分には問題が無かったのと、上記の対策をやった後に追加されたユーザで起きたことから、どうも GetText が怪しい。

で、Railsログを見ると、

NameError (uninitialized constant GetText::Rails::SecretKeyGenerator):

2つのケースとも上記のログを吐いている。

いやぁ、はっきり言って RailsRuby には全然明るくないし、まともに原因を追うのは絶望的で、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

としてみた。

ビンゴ

でも、本当にこの対処が正しいかはよく分からない(^^;

トラックバック - http://d.hatena.ne.jp/JULY/20090701