GetText、LoginEngine、UserEngineを連携する時の注意
昨日まで悩んでいた、production環境での「NoMethodError」が解決できた!require 'gettext/rails'をLoginEngineやUserEngineよりも先に宣言したら、エラーは発生しなくなった。今はproduction環境で正常に稼働している。プラグインを利用するときは、その利用を宣言する順番が問題になることがあるようだ。マニュアル通りにちゃんと宣言しても、不運にもその順番が悪いと、今回のように悩むことになるかもしれない...。(なんだか、MacOS9の頃の機能拡張のコンフリクトに似ているなと...。)今後、十分気に留めておこう。
設定の順番
以下のプラグインを連携して利用する時の順番
-
- Ruby-GetText-Package 1.8.0
- Engines
- LoginEngine
- UserEngine
具体的には、以下のように設定するだけで正常に動くようになった。(Ruby-GetText-Packageの設定をLoginEngine、UserEngineより前にしただけ。)
config/environment.rbの設定順序
$KCODE = 'u' # 'u'=UTF-8, 's'=SJIS, 'e'=EUC-JP require 'jcode' # Stringクラスのメソッドなどを、$KCODEに指定した文字コードで適切に動作するように置き換える。 # Be sure to restart your web server when you modify this file. ...(途中省略)... # Include your application configuration below # Ruby-GetText-Packageを使う宣言 require 'gettext/rails' # Ruby GetTextにmsgmergeのパスを教えてあげる ENV['MSGMERGE_PATH'] = '/Applications/Locomotive2/Bundles/standardRailsSept2006.locobundle/i386/bin/msgmerge' module LoginEngine config :salt, "ror-salt" # Source address for user emails config :email_from, '送信元メールアドレス' # 届いたメールのfrom欄に表示される。 # Destination email for system errors config :admin_email, 'システム管理者のメールアドレス' # Sent in emails to users config :app_name, 'Softwarebook' end module UserEngine config :admin_login, "zarigani" config :admin_email, 'zariganiユーザーのメールアドレス' config :admin_password, 'zarigani' end Engines.start :login, :user # 必ず:loginを最初に書く UserEngine.check_system_roles