Redmineのユーザー一括登録プラグインを作ってみた

Redmineを使ってみっかーとなったので、いろいろ触ってみてたのですが、20人くらいのユーザーを1件ずつ登録するのに死にそうになったので、プラグインを作ってみた。3時間くらいで。Rubyrailsも全然知らないけど。
作ったというか、実際には既存のプラグインとかのコードを組み合わせただけなんですが。

本当は先週くらいに作ってたんだけど、公開するためのコードの整理とかドキュメントをちゃんと書くののほうが時間かかったよ。

使い方

ダウンロード

http://www.ne.jp/asahi/shrkw/shrkw/redmine/redmine_user_import.0.0.1.zip

  • ヘッダ付きCSVファイルを用意
    • こんな感じのCSVファイルを用意。
    • 改行コードはLFじゃないとダメっぽい
login,password,lastname,firstname,mail,admin
"a4","aa","john","doe","hoge@example.com",0
"a6","aa2","larry","wall","hoge2@example.com",1
  • 管理者ユーザーでログイン
  • 右上のリンクから一括登録画面へ

  • あとは画面に沿って進めてください!
確認してるバージョン
Rails
2.1.2
Redmine
0.8.4
依存ライブラリ
  • fastercsv

こんな感じで入れてください。

#gem install fastercsv

参考情報

作るのに参考にしたサイト。こちらにも感謝。

Ruby自体については、シンボルとかよくわかんないというレベルですが、この本が参考になりました。

たのしいRuby 第2版 Rubyではじめる気軽なプログラミング

たのしいRuby 第2版 Rubyではじめる気軽なプログラミング

でも、基本的にはソース読んだほうがいろいろわかった。

作ってたときのメモ

GLocで、言語設定された言語のリソースがないときに、en.ymlをみてくれない

ja.ymlとかなかったときはen.ymlをみてくれるのかなーと思ってたんですが、みてくれないんですね。
リソース読んでくれねーというのでしばらく悩みましたが、ja.ymlを作ってそのなかに書けば、ちゃんと反映してくれました。

管理者ユーザーにだけ表示したい

if属性のところに書けばいいみたい。

menu :account_menu, :user_import, { :controller => 'user_import', :action => 'index' }, :caption => :user_import, :before => :logout, :if => Proc.new {User.current.admin?}

情報元はRedmineでチケットの一括インポート - こくぼ@Everything is the experience.

でも、これだけだとURLさえ知られてたらアクセスできちゃうな。コントローラーのほうでも管理者か判断したいのに。とか思ってソースみたら。

管理者権限がないユーザーには表示させたくない

settings_controller.rbにちゃんと書かれてますね。

class UserImportController < ApplicationController
  unloadable

  before_filter :require_admin

require_adminをfilterに入れる、と。

デフォルトの言語を取得する

Settingオブジェクトからとってこれるのね。

Setting.default_language