Change The World

changeworldのblogですよん。

チケットの“複製”と“コピー”の違い

Redmine Advent Calendar jp 2011 Changeworld on Redmine 7日目の参加記事です。

チケットの“複製”と“コピー”の違いについて、ご紹介します。

日本語で“複製”と“コピー”と言うと違いは無い様に感じます。しかし、 Redmine ではこの二つを明確に区別しています。“複製”と“コピー”どちらも Redmine で既存チケットを元に新しいチケットを作成する機能です。

複製

複製は同一プロジェクトに対して、元のチケットの内容が記入された状態で“新しいチケット”をクリックした際と同じ画面が表示されます。トラッカーや題名、説明といった項目は元のチケットの内容が設定された状態で表示されます。

コピー

コピーはページ名が“コピー”になっていますが、“移動”をクリックした際と同じ画面が表示されます。元のチケットと同じ内容のチケットを作成し(ここまで“複製”と同じですね)、別のプロジェクトにも移動させることが出来ます。開始日と期日の欄が空欄の状態で画面に表示されますが、空欄のまま“コピー”を実行すると、元のチケットの開始日と期日を新しいチケットに設定します。少し、ここの部分が不親切ですよね。また、トラッカーやステータス、優先度、担当者、開始日、期日の各項目は元のチケットの値をデフォルトでは引き継ぐ様になっていますが、新たに設定することも可能です。

“複製”と“コピー”の使い分け

“複製”は同一プロジェクト内で、既存チケットを元に内容の一部を変更したチケットを作成する場合に使うと良いと思います。

逆に、“コピー”は既存チケットと異なるプロジェクトに既存チケットを元に内容の一部を変更したチケットを作成する場合に使うと良いと思います。

複数のチケットを“コピー”したい場合は、チケット一覧画面で元にしたいチケットを選択後、右クリックで表示されるメニューから“コピー”を選択することで、複数のチケットを“コピー”することが出来ます。

こんな plugin 作りました part.1

Redmine Advent Calendar jp 2011 Changeworld on Redmine 6日目の参加記事です。

こんな plugin 作りました1つ目としてご紹介するのは“Good Job Plugin”です。

Good Job Plugin の特徴は単純です。

チケットをクローズすると、チケットの背景画像が“Good Job!!”な画像を表示してくれる…ただ、これだけです。

ねっ、とっても単純でしょう?

元々は facebook のいいね!を実装しようとしたんですが、「既にある」かつ「社内LANから facebook に接続出来ない」という状況だったので、こんなものを作ってみました。もちろん実用的ではないことは重々承知ですが、意外と受けが良かったのがちょっと驚きでした。

既存メソッドに簡単に機能を追加する方法

Redmine Advent Calendar jp 2011 Changeworld on Redmine 5日目の参加記事です。

既存メソッドに追加する方法をご紹介します。

Redmine を使っていると「ここの仕様はこうしたい…」という事が多々あります。その際、 Redmine に直接手を入れても良いのですが、そうすると Redmine のコミッターとなって本家に採用してもらわない限り、Version up の度に毎回修正する必要があり、少々面倒です。

そんな時に、メソッドを上書きするけど、元のメソッドも残すことが出来る方法があります。それが “alias_method_chain” です。

alias_method_chain :validate, :issue_extensions

の様に書くと、validate を validate_with_issue_extensions でオーバーライドしてくれます。ここに変更内容を書くと validate_with_issue_extensions として動作時は変更内容のメソッドとして動作し、 validate_without_issue_extensions として呼び出せば、既存のメソッドとして使い分けることが出来ます。

但し、このメソッドを使うと動かなくなる部分があります。

そう、それが Redmine Advent Calendar jp 2011 - 1日目でご紹介した「config.cache_classes = true でなければ動かない部分がある」というものです。

cache している class をオーバーライドして、実現しているため、 cache をしない設定にしてしまうと動きませんので、ご注意ください。

一人から始める Redmine

Redmine Advent Calendar jp 2011 Changeworld on Redmine 4日目の参加記事です。

一人から始める Redmine として、今回私が使っている方法をご紹介します。

Redmine と言うと大抵の方が複数人から使うものだと思っていらっしゃると思いますが、一人から使い始めるのもそれはそれで便利ですよ。

チームを率いていたりすると、チームに導入する際、最初にルールをかっちり決めておき、それから展開しようという風に思うものです。個人的には使っていく内にチームにあった使い方やルールが色々と見えてくるものもあるので、堅苦しく考えず、まずは導入してみてはどうですか?と思うのですが、中々そうはいかない様です。

その際、「Redmine を導入する前にルールを明確にしたい」けど、「使ったことがないからどういう風にルールを決めれば良いのか分からない」という状態になります。Redmine はフリーのツールですから、こういう場合はまず一人から使い始めてみると良いです。

使い始めるとすぐに感じると思いますが、ちゃんとしたチケットを最初に登録しよう・させようとは考えないことです。まず、 Redmine に作業をすべて列挙しておけば、忘れてしまうことがなくなりますから、とりあえず最初にやるべきことは把握している作業をチケットとして Redmine に登録することであって、間違いのない、重複ではないチケットを登録することはすぱっとルールから外した方が良いと思います。Redmine のチケットはチケット登録後でも「トラッカー」、「題名」、「説明」は変更可能ですし、既にあるチケットと重複していたら、関連性から既存チケットの重複チケットであることを後から記載することも出来ます。また、期日や予定工数、進捗状況が一覧で把握出来ますから、Excel を使ってWBSを作成しているのであれば、一度 Redmine を使うことをおススメします。

意外と知られていない機能 part.1

Redmine Advent Calendar jp 2011 Changeworld on Redmine 3日目の参加記事です。
「公開する」ボタンを押していなかったという凡ミスに加えて、はてなブログは投稿時間の変更が出来ないということが重なり、12/3の投稿が2個ある様に見えてしまっていますね…申し訳ございません。

意外と知られていない機能1つ目としてご紹介するのは“チケットのトラッカーや題名、説明の変更方法”です。

今まで何気なくやっていたのですが、チケットの更新やチケットの参照は特に説明しなくてもUIを見ただけで分かるみたいですが、これが分からない人が少なくない数居られます。
確かにあまり分かり易いUIになっていないんですよね。

チケットの更新画面を表示させると「プロパティの変更」というのが見えると思います。この右側に「続き」というリンクがあるのが分かると思います。このリンクをクリックすると更新画面の一部がAjaxで書き換わり、チケットのトラッカーや題名、説明が表示され、編集出来る状態になります。もう一度先程の「続き」というリンクをクリックすると、またAjaxで元の状態の画面に書き換わります。

もし、“チケット作成した後、トラッカーや題名、説明の更新方法が分からないから間違ったら同じ内容のチケットを作成していたよ(複数人、確認しております)”という方をご存知の方はこの方法を是非とも教えてあげてください。

愛用している plugin part.1

Redmine Advent Calendar jp 2011 Changeworld on Redmine 2日目の参加記事です。

愛用している plugin 1つ目としてご紹介するのは“Code Review Plugin”です(どんどんどんぱーふーぱーふどんどんどんぱーふーぱーふ)。

リンク先を見ていただくと分かる通り、Code Review Plugin の素晴らしい点は Redmineリポジトリを見ながら、Code の Review が出来ることに加えて、コメントの様に Review 結果を記載出来ること、そして、それがチケットとして、 Redmine に登録出来ることです。

大変重宝している plugin ですので、もし入れていない方は一度お試しください。きっと、その効果に愛用することになると思います。

plugin 作る時にはこの設定

今日から始まる Redmine Advent Calendar jp 2011 と Redmine Advent Calendar jp 2011 Changeworld on Redmine の1日目の参加記事です。

私は今まで何回か Redmine の plugin をリリースして来たのですが、その際に便利(というか良くやられている)Tipsをご紹介します。

それが

config.cache_classes

という設定です。

デフォルトの場合、production は true, development は false になっています。
この設定は class をキャッシュするか否かを指定するもので、 false になっているとソースが修正された場合、再読込のタイミングで反映されます。
逆に、 true になっていると、  class をキャッシュしますから、再読込しても最新ソースが反映されません。
基本的に開発時( development )では、 false にしておいて、Redmine を起動しつつ、ソースを修正していくのが良いのですが、時々曲者がいます。

そう、それが Code Review Plugin, Issue Extensions Plugin 他多数の Plugin です。

これらの Plugin は、config.cache_classes = true でなければ動かない部分があるので、解析するのが大変です。
そういう場合は辛くてもソースを見てください…。私もがんばって読みました…。

真似は学びの源”というわけで、皆さん、どしどし他人の plugin を config.cache_classes = false で動かして、学んでいってください!