Redmine で Github のように絵文字を入力できるプラグインを作った

チケットの内容は簡潔に書くのがいいと思うが、簡潔に書きすぎると冷たい印象になったりしてよくない。

一方、同じような issue 管理機能でも Github では ":"(コロン) で囲った一定の文字列で絵文字が手早く書けるので、簡潔に内容を書きながら、ちょっとした感情を含めることができて冷たい感じになりにくい。

Redmine でも同じことがしたいのでプラグインを作ってみた。

環境

Redmine 3.0 以降

インストール

1. 以下のようにプラグインをインストールする。

$ cd $RAILS_ROOT/plugins
$ git clone https://github.com/suer/redmine_emoji.git
$ cd $RAILS_ROOT
$ bundle install

2. Redmine を再起動

機能

Wiki 記法が効くところならどこでも :xxxx: 形式の Github の絵文字を認識し、画像と差し替える。
Emoji cheat sheet for GitHub, Basecamp and other services



また、先頭マッチでサジェストを行う。

似たプラグイン

当然同じようなことを考えている人はいるようで、同じ目的のプラグインは既にある。

https://github.com/tmy/redmine_gemoji

こちらは Textile のみの対応となっており、Markdown で使えないのと、サジェストする機能がなかったので新たに作った。

サブディレクトリ運用の複数の Redmine で別の Redmine にアクセスすると勝手にログアウトするのを防ぐ

確認したバージョン
問題

Redmine は _redmine_session という Cookie でログイン状態が管理されていてる。

Redmine では、何もしないとパスが "/" で登録されるので、実際に異なるパスの Cookie データでも、同じとみなされてしまう。

なので、別の Redmine にアクセスすると、同じドメイン、パスの同じ Cookie キーなのに、値が違うので、ログインのしなおしになる。

設定方針

config/application.rb の以下の部分にパスを指定すればいいが、このファイルは Git の管理下なのであまり修正しないほうがいい。

    config.session_store :cookie_store, :key => '_redmine_session'

Redmine では、 config/application.rb に追記修正したい場合に、config/additional_environment.rb というファイルを用意している。 このファイルに書かれたコードは、Rails::Application のインスタンス化で eval されるので、 config/application.rb に書いたのと同じように動く。

解決

ということで、それぞれの Redmine の config/additional_environment.rb に以下のように書けばうまく動く。

config.session_store :cookie_store, :key => '_redmine_session', :path => '/XXXX'

XXXX はそれぞれの Redmine で異なる値を入れればよいが、その Redmine が配備されているサブディレクトリパスとかにすればいいと思う。

タブ文字で grep する

test(タブ文字) みたいなのを grep したい場合。

ターミナル
$ grep "test(タブ文字)" /path/to/file

のように入力したいが、普通に入力するとシェルがタブ文字を奪う。 bash, zsh の場合は ctrl-v を入力してからタブを打つと入力される。

ただし、これはメモなどからコピペするときに苦労する。

[:space:] の利用

空白文字もマッチしてしまうけど、それでもよければ [[:space:]] でタブ文字もマッチする。 これならメモなどからコピペできる。

$ grep "test[[:space:]]" /path/to/file
$'\t'
$ grep "test$'\t'" /path/to/file

はうまくマッチしなかった。

$ grep test$'\t' /path/to/file

であればマッチする。

どんなふうに展開されるか追っていけば使えるかもしれないが、よくわかっていない。

Java の .class ファイルを一括で逆コンパイルする

環境
jad のインストール

Mac OS X で Homebrew の場合

$ brew install homebrew/binary/jad
コンパイル

classes 以下に展開されているとすると、以下のコマンドで src ディレクトリ以下に .java ファイルとして一括で逆コンパイルできる。

$ jad -o -r -sjava -dsrc 'classes/**/*.class'

Zendesk で独自ドメインのサポートアドレスを使用する設定の SPF レコードチェックでエラーが出た

Zendesk のサポートアドレスに独自ドメインを使用する場合は SPF レコードに mail.zendesk.com を指定すると、メールから Zendesk という文字が消えるので顧客は Zendesk を意識せずにサポートを受けることができる。

自社のメールドメインを使用してメールをZendeskから代理送信する方法

設定しようとしたドメインでは、Google Appsドメインの所有チェックの認証コードも TXT レコードに入れていたので、以下のように設定した。

"v=spf1 +include:_spf.google.com +include:mail.zendesk.com -all" "google-site-verification=XXXXXXXXXXXXXXXXX"

しかし、上記では Zendesk のチェックを通らなかった。

いくつかの SPF レコードのチェッカをためしたところ allgoogle-site-verification という引数は駄目だというようなメッセージが出ていたので、 試しに all の後ろに空白文字を入れたら通った。

"v=spf1 +include:_spf.google.com +include:mail.zendesk.com -all " "google-site-verification=XXXXXXXXXXXXXXXXX"

正しい対処では無い気がする。