2015年04月27日

雲の足跡

redmine【チケット一括登録】

お久しぶりです、こんにちは。
システム部の柿添です。

四月も終わりそうというのに、
まだまだ朝方は寒かったりしますね。
段々と暖かく夏に向かっていってほしいです。

さて、半年ほど前の記事でRedmineに触れましたが(↓このあたりです)
https://www.alivecast.co.jp/acblog/index.php?postid=569
https://www.alivecast.co.jp/acblog/index.php?postid=570
チケット登録に際して、複数チケット登録が面倒であるため、
csvからチケット複数登録が可能なプラグインを紹介します。

■redmine_importer
https://github.com/zh/redmine_importer

READMEを呼んでみますと、
”The plugin has been tested on Redmine 1.1, 1.2.0, 2.2-stable and 2.3.2 (report by J?r?me BATAILLE). ”
2.3.2までは動作保証されてるそうですね、大丈夫です2.5でも動きました。

”Prerequisites: Unless you are using ruby-1.9, you'll need the fastercsv gem (gem install fastercsv as root). Versions 1.4 through 1.5.3 are tested.”
rubyのバージョンに注意しろ、ruby1.9未満はfastercsv が必要だからな!とのことです。

早速、プラグインを入れて行きましょう。

1.ダウンロード pluginsに設置

上記URLから本体をダウンロードし、解凍。
ディレクトリ名をredmine_importerにリネームし、
~redmine設置パス~/plugins/に放り込みましょう。

SSHで行く場合→
・本体を落として解凍
wget https://github.com/zh/redmine_importer/archive/master.zip
unzip master.zip
・リネームして設置
mv redmine_importer-master/ redmine_importer
mv redmine_importer ~redmine設置パス~/plugins

以上で設置できます。

2.データベースマイグレーション
マイグレーションを実行し、DBにテーブルを作ってあげましょう
rake redmine:plugins:migrate RAILS_ENV=production

3.Redmineを再起動
Redmineを再起動してください。

4.プラグインの有効化
importerプラグインをプロジェクトで利用できるようにしましょう。
適当なプロジェクトを開き、設定→モジュールと選択して行きましょう。

Importerにチェックを入れてあげればプロジェクトのmainmenuにインポートが表示されます。

5.csvで一括登録
文字コードUTF-8、改行=LFのcsvファイルを読み込んで複数登録が可能になります!

■wrong number of arguments (2 for 0)

redmine_importerにてcsvを読み込む際に、
wrong number of arguments (2 for 0)とエラーが表示されて読み込んでもらえない場合の対処法です。

rubyのバージョンを上げる方法が手っ取り早いのですが、ファイルを少し変更してあげても動きます。

1.fastercsv準備
sudo gem install fastercsv
sudo bundle install

2.importer_controller.rbに追加
redmin_importer/app/controllers/importer_controller.rbをエディタで開きます。
1行目と2行目が以下のようになっていますので、
1 require 'csv'
2 require 'tempfile'

ここにこちらを追加してください。
#ここから
if CSV.const_defined? :Reader
require 'fastercsv'
Object.send(:remove_const, :CSV)
CSV = FasterCSV
else
end
#ここまで

ここで再起動すれば、すんなり動いてくれるようになります。

■最後に
読み込みに使うcsvをきれいに作って上げないといけないので、
多少面倒なことはありますが、ひとつひとつ登録していくより便利です。

有効活用して行きましょう。