プラグイン[redmine_importer 0.3.1] 動作せず。

3,301 views
Skip to first unread message

sue

unread,
Dec 5, 2010, 9:52:26 PM12/5/10
to Redmine Users (japanese)
完全な初心者です。宜しくお願いします。
Redmine 1.0.3にて、プラグイン[redmine_importer 0.3.1]を取込んだのですが、うまく動作しません。
また、プロジェクトメニューに"translattion missing: ja, label_import"が表示されていました。
どなたか解決法についてお教えいただきたく、宜しくお願い致します。

参照:http://www.martinliu.info/2009/04/redmine_importer-redmine-csv-
import-plugin/?
utm_campaign=ichiroc&utm_medium=twitter&utm_source=am6_feedtweet

mschibata

unread,
Dec 6, 2010, 4:56:17 AM12/6/10
to Redmine Users (japanese)
m柴田です。

Martin Liu 版のは、Redmine の古いバージョンのを対象にしており、Redmine 1.0.3 とでは、言語ファイルの置き場と
フォーマットが違います。

古いプラグインでよくある話ですので、このエラーだけだったら以下の手順で出なくなります。

-----
{Redmine Root}/vendor/plugins/redmine_importer/lang にある ja.yml (なかったら英語
のから作る) を
{Redmine Root}/vendor/plugins/redmine_importer/config/locales フォルダを作ってそ
こに移し、ほかの Redmine 1.0.3 で正常に動いているプラグインの ja.yml を参考にフォーマットをテキストエディタで書き換えま
す。
-----

このとき日本の方が日本語訳した Junos 版 https://github.com/juno/redmine_importer をとってき
て、そちらをベースに ja.yml を作れば日本語化もできます。

ただし (最新の状況は知りませんが) オリジナルである Martin Liu 版は、対応する Redmine のバージョンが (言語ファイルの
件以外も) 古いので、上記だけ解決しても動かないと思います。

Rchady 版 https://github.com/rchady/redmine_importer/tree/ という改良版が出回ってい
て、そちらの最新は Redmine 1.0.x 対応してますので、そちらの ja.yml を Junos 版を元に日本語化するとよいと思いま
す。うちはコレで動いてます。

なお、さらにそれを改良した (作者談) とされる https://github.com/leovitch/redmine_importer
試したのですが、その時点のものでは、こちらの環境でうまく行きませんでした。

このあたり、常に状況が変わっていますので、最新のものを探して実際に試した方がよいです。

...とは言うものの Redmine のプラグイン作者の方々は、何故かオリジナルのリポジトリのコミッターにならずに別に自分のリポジトリに派生版
を置くのが流儀のようですので、探すのはちょっと大変かも知れません。

sue

unread,
Dec 7, 2010, 4:52:05 AM12/7/10
to Redmine Users (japanese)
早速のご返答有難うございました。
"translattion missing: ja, label_import"表示については無事解決することが出来ました。有難うございまし
た。
これからImport検証を行ないたいと思います。

sue

unread,
Dec 7, 2010, 5:49:38 AM12/7/10
to Redmine Users (japanese)
Junos 版importerを用いてimportを試みていますが、Internal Errorが起きてしまいます。
状況としては以下となります。
1. Rchady 版importerをダウンロード
2. Junos 版importerをダウンロード
3. Junos 版のja.ymlを加工(ja:,インデント追加)し、Rchady 版importerに取込み
(\redmine_importer\config\locales)
4. 作成したexcelチケット情報ファイルをUTF-8変換し、csvファイルを作成
5. Rubyのfastercsvをインストール
6. Redmineを起動し、プロジェクトメニューからインポート選択→チケットインポーターでCSVファイル選択→列のマッチングで設定し送信
7. Internal Error発生

以下サイト(CSVインポート)も参考に実施してみました。
http://www.02.246.ne.jp/~torutk/swetools/redmine/setupCentOS5.html

気づく点などあれば教えていただきたく。。。
宜しくお願いいたします。
Message has been deleted

mschibata

unread,
Dec 7, 2010, 10:16:31 AM12/7/10
to Redmine Users (japanese)
Rchady 版に Junos 版の Ja.yml (を新形式にフォーマットを変えたもの) を入れてっているのであれば、こちらと同じ環境だと思
います。

後は、幾分時間が経過してますので、バージョンアップ等はしているかも知れませんが...

確か、チケットの存在がなくても無視...というような内容の強行パラメータがあったと思いますが、これをオンにしないといけなかったと思います。

それ以外では

ユーザー名→ユーザーID に変える。

# も Id にマッピングしないといけない。

一度失敗すると元の画面に戻ってインポートしても 0件成功 になるだけでインポートされない。
ファイル指定からやり直す必要がある。

...が当時のメモ上に見えます。

プロジェクトを立てるときにやるものですから、以前やってからちょっと間が空いてますが、きっと私が最初のころに引っかかった点がほかの方も引っかかる
確率が高いとしたら、このあたりを疑ってみるのがよいかと思います。

mschibata

unread,
Dec 7, 2010, 6:39:40 PM12/7/10
to Redmine Users (japanese)
m柴田です。

出社して、ほかの人に使い方を説明した当時のメールを見ると...

On 12月8日, 午前12:16, mschibata <mschib...@gmail.com> wrote:
> 確か、チケットの存在がなくても無視...というような内容の強行パラメータがあったと思いますが、これをオンにしないといけなかったと思います。

→ 「存在しないチケットの指定を無視する」でした。で...

> # も Id にマッピングしないといけない。

...と共に、上書きインポート(「既存チケットを更新する」チェックボックスをオン)するときの注意事項でした。

ただし、フィールドの対応のつくものは、極力付けておいた方がよいという記事を、どこかで見た記憶がありますので、上書きでなくても後者は、やっておい
た方がよいと思われます。

できてしまうとどこがポイントだったか忘れてしまいがちなのですが、記憶がフレッシュなときのメールにありましたので、これで操作時に気づいたポイント
は全部だと思います。
#操作の問題ならば...ですが。

mschibata

unread,
Dec 7, 2010, 7:06:17 PM12/7/10
to Redmine Users (japanese)
当方で問題を解決できたときの起点になったサイトの URL を書いておきます。
http://d.hatena.ne.jp/unau/20100824/1282634772

また以下は、Redmine 1.0.x 非対応のときの情報ですが、操作上の注意事項などは今も生きています。
#共に Redmine 利用者の方には定番のサイトだと思います。

http://forza.cocolog-nifty.com/blog/2010/04/redmine-csv-imp.html
http://daipresents.com/weblog/fujihalab/archives/2010/03/redmine-csv-import-plugin.php

この中で、
項目をダブルクォートで括る件
日付のフォーマット
...について、若干の情報の不一致がありますが、前者はすべての項目を "" で括る必要はありません。
項目内に改行がある場合は当然括る必要がありますが、こちらで実際に成功したときの CSV では、空の項目も明示的に "" としてありました。
#カンマが2つ続いたら空ではなく...

後者は YYYY/MM/DD、YYYY/MM/DD hh:mm:ss (時間指定のあるフィールドの場合) で行けてます。

chuta maebashi

unread,
Dec 7, 2010, 6:50:18 PM12/7/10
to redmine-...@googlegroups.com
どうも初めて投稿いたします。

先日同じ方法を使って、同じような現象になって上手く動作させる事ができたのでお役に立てば。

確かja.ymlをそのまま持ってくるだけではだめで、例えば

label_result_notice: "%d 件のチケットを処理し、%d 件のチケットをインポートしました。"

の%dの部分を

label_result_notice: "{{handle_count}} 件のチケットを処理し、{{success_count}} 件のチケットをインポートしました。"

というように書き換えてInternal Errorが無くなったと思います。他にも同じような箇所があるのでen.ymlを参考に書き換えてみて下さい。
もし既に対応されているのであれば、別の問題かもしれません。参考までに

sue

unread,
Dec 9, 2010, 8:05:43 PM12/9/10
to Redmine Users (japanese)
皆様、色々とアドバイス有難うございました。

結果、インポートすることが出来ました!
ただし、題名のみといった部分インポートでは失敗し、全て(ほとんど?)のフィールド項目を選択した場合に限ってですが。
とりあえず動作しましたので、使用していきたいと思います。

有難うございましたm(_ _)m

TOYOFUKU Chikanobu

unread,
May 24, 2011, 4:59:30 AM5/24/11
to redmine-...@googlegroups.com
豊福です。

最近 redmine_importer を使ったので報告です。
今回 akiko-pusu/redmine_importer(juno/redmine_importer系列らしい)
https://github.com/akiko-pusu/redmine_importer
を Redmine 1.1.3 で使いました。
開発者が日本人なだけに日本語表示は問題なくCSVファイルの日本語コードも
UTF8, EUC, SJIS から選べます。

ほぼ問題なくインポートできましたが一点だけ、これはオリジナル版からそうなのですが
カテゴリを app/controllers/importer_controller.rb の
category = IssueCategory.find_by_name(row[attrs_map["category"]])
で見つけています。カテゴリはプロジェクト毎に設定されるので
同じカテゴリ名でもプロジェクトが違うと別の番号が付くことがあります。
これに対応するためには
category = IssueCategory.find_by_project_id_and_name(project != nil
? project.id : @project.id,row[attrs_map["category"]])
のようにする必要がありました。
(leovitch版では多分
category = IssueCategory.find_by_project_id_and_name(project.id,
category_name)
未確認)
---

mschibata

unread,
Jun 6, 2011, 1:54:24 AM6/6/11
to redmine-...@googlegroups.com
m柴田です。
 
故あって、以前やってみて動かなかった Leovich 版 https://github.com/leovitch/redmine_importer に再チャレンジしてみようと思っています。
どうやらこれが一番最近までメンテが続いているようで、以前うまく行かなかった頃からかなり改良されています。
 
実際は、ここからごくバグフィックスのためごく最近フォークした IdlySphere  版 https://github.com/idlysphere/redmine_importer を入れてみたところです。
若干日本語が変ですが、それは単に言語ファイルをいじれば直りますので、そこは大目に見てます。
 
GitHub のグラフ表示を見ると、ご紹介のあった akiko-pusu 版も Leovich 版も Rchady 版から物理的にフォークしているようです。
akiko-pusu 版は、それに Juno 版の翻訳を入れたりして改良したものではないかと想像します。
 
今回の再チャレンジの理由なのですが、Rchady 版では、サーバー側に一時ファイルを作る処理があります (オリジナルである Martin Lu 版から残っています)。
Leovich 版あるいは、別のフォークツリー枝である GregMefford 版の流れを汲む ansoncat 版などでは、一時ファイル相当をデータベース上に作るよう改良されているようです。
 
サーバー側に一時ファイルを作られると、Apache Load Balancer などでサーバーが物理的に複数ある構成では、一時ファイルを作るリクエストと読み出すリクエストが、そのときの負荷分散の都合で同じ物理サーバーに行くとは限らず、読み出すときファイルが見つからないというエラーになります。
 
一時ファイルを作ってもリクエストが分かれないような処理のときはよいのですが、redmine_importer のように、一度読み込んで、確認画面で設定を決め... というような操作フローのものは、間がどうしてもいったん切れますので、そういうときは、複数の Web サーバーが、同じ内容を指すデータベース上に一時ファイル相当の情報を置くのが定石です。
 
当方 Windows サーバー上で Redmine を稼働させている関係上、Passenger が使えず、複数の Thin をサービス化して、Apache Load Balancer で負荷を振り分けていますので、以前からの Rechady 版ベースのプラグインでは、正体不明のエラーが多発しておりました。
 
最近別のプラグインで同じ問題に行き当たり、redmine_importer 内も Grep してみたところ、同じ問題がある作りでしたので、ちょっとその対策版である Leovich 版でうまく行かないかと期待しているところです。
 
使われる方の環境に依存する話ですので、akiko-pusu 版でよいケースも多いと思いますが、うちと同じ環境の方には参考になるかと思いましたので、お知らせしておきます。

nobu_toyofuku

unread,
Jun 7, 2011, 5:22:25 AM6/7/11
to Redmine Users (japanese)
豊福です。

On 6月6日, 午後2:54, mschibata wrote:
> 故あって、以前やってみて動かなかった Leovich 版https://github.com/leovitch/redmine_importer
> に再チャレンジしてみようと思っています。
> どうやらこれが一番最近までメンテが続いているようで、以前うまく行かなかった頃からかなり改良されています。
> 実際は、ここからごくバグフィックスのためごく最近フォークした IdlySphere 版https://github.com/idlysphere/redmine_importerを入れてみたところです。

早速試してみましたが Rchady版よりかなり使いやすくなってますね。
今後はこれを使うことに決め少しいじってみました。
詳細は http://d.hatena.ne.jp/itto100pen/20110607 に。

ところで今回気がついたのですが gem install fastercsv しなくても Redmine からは
FasterCSV が利用可能だったのですね。grep したら lib/faster_csv.rb にありました。
---

mschibata

unread,
Jun 9, 2011, 3:48:47 AM6/9/11
to redmine-...@googlegroups.com
m柴田です。
エラーがあったときの1つ目の原因を表示されるようにしておられますが、当方でやってみると translation_missing が表示されます。
たまたまうちで発生させているエラーの日本語りソースだけがないのかどうかまではわかりません。
 
何かお気づきになりましたらお知らせいただけると助かります。

nobu_toyofuku

unread,
Jun 9, 2011, 4:51:28 AM6/9/11
to Redmine Users (japanese)
豊福です。

On 6月9日, 午後4:48, mschibata <mschib...@gmail.com> wrote:
> エラーがあったときの1つ目の原因を表示されるようにしておられますが、当方でやってみると translation_missing が表示されます。
> たまたまうちで発生させているエラーの日本語りソースだけがないのかどうかまではわかりません。

私が思いつくのは二つ、
一つ目は redmine のバージョンが違って多国語対応方法が違う。
%d か %{count} か {{count}} のどれで書くかみたいなやつです。
自分でもよくわかってませんが元が {{}}形式でそのまま使っても動いたので
それでよしとしました。(私が試したのは Redmine-1.2.0)

二つ目、これが結構はまったのですが同時に入れていた user import プラグイン
の ja.yml の内容が issue import の ja.yml とかぶっていて(issue import を
もとに user import を作ったらしい)issue import が自分用のラベルを利用して
いるつもりが user import用のラベルを使っていてフォーマットが合わずエラーに
なるというものでした。user importプラグインは使い終わっていたので外して
対応しました。
---


mschibata

unread,
Jun 9, 2011, 6:55:18 AM6/9/11
to redmine-...@googlegroups.com
m柴田です。
ご連絡ありがとうございます。
 
先ほどようやく原因がわかり、何とか修正できました。
多分 redmine のバージョンが古い (1.1.2 stable) ので、以下の修正箇所あたりに差があるのでしょう。
 
まず表示された以下の文字列の読み方がわかりませんでした。
 
"translation missing: ja, activerecord, errors, messages, record_invalid"
 
このメッセージの順番に言語 yml の定義の構造を降りていけばよかったということがわかりました。
 
降りていってみてわかったのですが en.yml にもその文字列定義が無かったので、ja.yml と en.yml の比較で日本語側に足りないものを探そうという作戦がそもそも破綻していました。
 
修正対象ファイル: \config\locales\ja.eml
 
...
  activerecord:
    errors:
      ...
      messages:
        inclusion: "は一覧にありません。"
        ...
        cant_link_an_issue_with_a_descendant: "指定したチケットとは親子関係になっているため関連づけられません"
        record_invalid: "Validation failed: {{errors}}"  ← これを追加 (vendor\rails\activerecord\lib\active_record\locale\en.yml にそれらしきものがあったので借用)
        ...
この処置で動くようになりました。
#とりあえず en.yml と ja.yml だけ処置しました。ここの言語ファイルは多すぎて単に英語のまま1行挿入するのだけでもちょっとパス...
 
元ネタであった vendor\rails\activerecord\lib\active_record\locale\en.yml ですが、そこには en.yml しかなかったので、文言を英語のまま ja.yml (ファイル名と先頭の宣言だけ変更) を作って試してみても、そちらでは改善しなかったので、どうもそっちが読まれているのではなさそうでした。
#あまりよくわかっていませんので、あくまでも実験にて現象を押さえました。

nobu_toyofuku

unread,
Jun 10, 2011, 2:52:31 AM6/10/11
to Redmine Users (japanese)
豊福です。

On 6月9日, 午後7:55, mschibata wrote:
> 先ほどようやく原因がわかり、何とか修正できました。
> 多分 redmine のバージョンが古い (1.1.2 stable) ので、以下の修正箇所あたりに差があるのでしょう。

1.1.3 でも同様のエラーになることを確認しました。

> (vendor\rails\activerecord\lib\active_record\locale\en.yml にそれらしきものがあったので借用)

取りあえず私も vendor\rails\activerecord\lib\active_record\locale\en.yml の
activerecord 以下の部分を vendor/plugins/redmine_importer/config/locale/
ja.yml
の最後に追加して試してみたらなんとか動くようになりました。

1.1 と 1.2 で何が違うのか調べてみます。
---

nobu_toyofuku

unread,
Jun 10, 2011, 4:24:59 AM6/10/11
to Redmine Users (japanese)
豊福です。

わかりました。Redmine-1.2.0 の変更点
http://www.redmine.org/projects/redmine/versions/27
の I18n のところを見ていったら
"Adds fallback to 'en' locale for untranslated strings (#5518)"
http://www.redmine.org/projects/redmine/repository/revisions/4679
というのを見つけました。
「translation に失敗したら英語のロケールで試してみるよ」ということみたいです。

Redmine-1.1系には config/initializers/30-redmine.rb に上記のパッチ

--- config/initializers/30-redmine.rb.org
+++ config/initializers/30-redmine.rb
@@ -1,3 +1,5 @@
I18n.default_locale = 'en'
+# Adds fallback to default locale for untranslated strings
+I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)

require 'redmine'

をあてるとうまくいきます。
---

Gou Okuda

unread,
Aug 19, 2011, 8:53:52 AM8/19/11
to Redmine Users (japanese)
豊福です。

IdlySphere版 redmine_importer を使ってチケットの履歴をインポート
していて気がついたのですが2番目以降の履歴が登録されないようです。

IdlySphere版以前では基になるチケットを
issues = Issue.find :all, :conditions => query.statement, ...
issue = issues.first
的なことをして得ていてそのタイミングで
issue のインスタンス変数 @current_journal が nil に初期化されて
いたのですが IdlySphere版ではその処理の前に
if @issue_by_unique_attr.has_key?(attr_value)
issue = @issue_by_unique_attr[attr_value]
end
的な最適化を入れているため @current_journal に最初の履歴が
入り続けているようです。

どう直すのがスマートかわからないのですが取りあえず以下の
ように強引に @current_journal を再初期化して対応しました。

--- app/controllers/importer_controller.rb.org
+++ app/controllers/importer_controller.rb
@@ -199,6 +199,7 @@
if update_issue
begin
issue = issue_for_unique_attr(unique_attr,row[unique_field])
+ issue.instance_eval { @current_journal = nil }

# ignore other project's issue or not
if issue.project_id != @project.id && !update_other_project

---

Reply all
Reply to author
Forward
Message has been deleted
0 new messages