プラグインをgem化する¶
r2904 よりRedmineはgemでインストールしたプラグインを使えるようになりました。
プラグインをgemとしてインストールすることにより1台のサーバに複数のredmineを構築している場合でもそれぞれにプラグインを入れる必要がありません。また、プラグインのバージョンアップも非常に楽です。
gemでインストールしたプラグインをredmineにロードするためにはenvironment.rbに以下のように記述します。
1 Rails::Initializer.run do |config|
2 ...
3 config.gem 'プラグイン名'
4 end
ではプラグインをgemに変換する方法です。jewelerというツールを使ってgemを作成する方法を説明します。
準備¶
以下の2つのツールがインストールされている必要があります。
- jeweler
- git
gitはリポジトリとしてgitを使っているかどうかにかかわらず必要です。jewelerが内部で使っているためです。
jewelerは以下のコマンドでインストールできます。
gem install jeweler
gitは本家 のサイトなどを参考にプラットフォームにあったものをインストールしてください。
Rakeファイルを作る¶
gem化したいプラグインのトップフォルダにRakefileがあれば、以下の記述を加えてください。無ければ新規にRakefileを作成してください。
1 #プラグイン名は適宜変えてください。
2 @plugin_name = 'code_review'
3
4 begin
5 require 'jeweler'
6 description = 'TODO'
7 author = 'TODO'
8 url = 'TODO'
9
10 redmine_init_content = File.read('init.rb')
11 if redmine_init_content.match(/description (.*$)/)
12 description = $1.gsub("'",'').gsub('"','')
13 end
14
15 if redmine_init_content.match(/author (.*$)/)
16 author = $1.gsub("'",'').gsub('"','')
17 end
18
19 if redmine_init_content.match(/[^ \t]*url ['"](.*)['"]/)
20 url = $1
21 end
22
23 if redmine_init_content.match(/[^ \t]*url ['"](.*)['"]/)
24 url = $1
25 end
26
27 Jeweler::Tasks.new do |s|
28 s.name = "#{@plugin_name}"
29 s.summary = "#{description}"
30 s.homepage = "#{url}"
31 s.description = "#{description}"
32 s.authors = ["#{author}"]
33 s.rubyforge_project = "#{@plugin_name}" # TODO
34 s.files = FileList[
35 "[A-Z]*",
36 "init.rb",
37 "rails/init.rb",
38 "{bin,generators,lib,test,app,assets,config,lang}/**/*",
39 'lib/jeweler/templates/.gitignore'
40 ]
41 end
42 Jeweler::GemcutterTasks.new
43 Jeweler::RubyforgeTasks.new do |rubyforge|
44 rubyforge.doc_task = "rdoc"
45 end
46
47 rescue LoadError
48 puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
49 end
50
51 task "create-version" do
52 # VERSION
53 File.open('VERSION','w') do |version_file|
54 redmine_init_content = File.read('init.rb')
55 if redmine_init_content.match(/^[ \t]*version (.*$)/)
56 version = $1.gsub("'",'').gsub('"','')
57 version_file.puts version
58 end
59 end
60 end
61
62 task "create_init_rb_for_gem" do
63 Dir.mkdir("rails") unless File.exist?("rails")
64 FileUtils.cp "init.rb", "rails/init.rb"
65 end
66
67 task "build-gem" => ["create-version", "create_init_rb_for_gem", "gemspec:generate", "gemspec:validate", "build"] do
68
69 end
そして以下のコマンドを実行してください。
rake build-gem
pkgというディレクトリの下にgemファイルができます。
また、gemをインストールする場合には
rake install
でインストールできます。