こんにちは。 VASILYのエンジニアの福本です。 前回は、Redmineのbacklogsプラグインの概要とインストール方法を紹介しました。 今回はインストール後の改善点について、メール設定とストーリ入力画面の改善についてご紹介します。
メール設定
SMTPにGoogleAppsを使用する
VASILYではGoogleAppsを利用しているので、Redmineからのメール送信もGmailのSMTPを利用する事にします。 メール関連の設定は下記のファイルを参考に記述するのですが、親切にもGmail用の設定も雛形になっています。
redmine/config/configuration.yml.example
GmailにはTLSを使用するので、いくつか作業してねと書いてありRedmineBlogへのリンクが貼ってあります。 こちらの手順通りにやってみたいと思います。
1. TLS用プラグインのインストール
Redmineのインストールディレクトリに行き、下記のコマンドを打つとインストールしてくれます。
ruby script/plugin install git://github.com/collectiveidea/action_mailer_optional_tls.git
2.設定ファイルの編集
先ほどの雛形ファイルを参考に、redmine/config/configuration.yml を作成します。 下記のようになります。
production: email_delivery: delivery_method: :smtp smtp_settings: tls: true address: "smtp.gmail.com" port: 587 domain: "smtp.gmail.com" # 'your.domain.com' for GoogleApps authentication: :plain user_name: "your_email@gmail.com" password: "your_password"
3.テストメール送信
管理者権限でログインし、管理>設定>メール通知の一番下に「テストメールを送信」というリンクがあります。 クリックすると自分のアカウントの登録メールアドレスにテストメールが送信されます。 何か問題があれば、エラーメッセージが表示されるようになっています。 これでGmailのSMTPを利用してメール送信をする事ができると思います。
非同期設定
メール送信はできるようになったのですが、バックログ管理画面やタスクボード上でのAjax操作が異様に遅くなりました。 先ほどの設定ではメール送信が同期設定になってしまっていたからです。 これだとメールが実際に送信されるまで処理が進まず、完了までに数秒待たされる事もあります。 非同期にできないかと調べていたら、やはりRedmine.JPにありました。 小技(0.9): 非同期メール送信を設定してチケット登録を高速化 (あとから雛形に書いてあるのを発見しました^^;;;ちゃんと見なきゃダメですね) 先ほどの設定のdelivery_methodのところをsmtpからasync_smtpに変更するだけです。 これで以前のパフォーマンスを取り戻しました!
production: email_delivery: delivery_method: :async_smtp # ここを変更 smtp_settings: tls: true address: "smtp.gmail.com" port: 587 domain: "smtp.gmail.com" # 'your.domain.com' for GoogleApps authentication: :plain user_name: "your_email@gmail.com" password: "your_password"
メール送信制御
ただ、バックログ画面やタスクボードの操作でいちいちメールが送信されるのもうざいですよね。 少し調べた限り、設定での制御はできないようです。 こちらはコードを見てみて、変更できそうであれば改修してしまおうと思います。 うまくいったら、また紹介させていただきます。
バックログ管理画面のプチ日本語対応
バックログ管理画面のストーリー入力は日本語にやさしくありません。 漢字変換を確定させるEnterで入力が確定してしまいます。 ひとまず下記のJSを修正する事で、入力確定をEnterでは無くCtrl+Enterにすることで対処しました。
redmine/vendor/plugins/redmine_backlogs/assets/javascripts/editable_inplace.js
$ diff editable_inplace.js editable_inplace.js.org 23,26c23,28 < if(event.ctrlKey === true && event.which === 13){ // Ctrl + Enter < that.saveEdits(); < } else if(event.which === 27){ // ESC < that.cancelEdit(); --- > switch(event.which){ > case 13 : that.saveEdits(); // Enter > break; > case 27 : that.cancelEdit(); // ESC > break; > default : return true;
ストーリーを入力する部分について全般的にちょっと使いかってが悪いので、時間を取って調整をしようと思っています。 またアウトプットが出てきましたらご報告します。 VASILYではエンジニアを募集しています。 一緒に変化を楽しみませんか? 詳しくはこちらをご覧ください!