More Related Content Similar to Redmineをプラグインで拡張しよう (20) Redmineをプラグインで拡張しよう13. Ruby
Windows
• RubyInstaller for Windows + DevKit +pikがお勧め
• http://rubyinstaller.org
• 面倒ならBitNamiでRedmineごとインストール
• https://bitnami.com/stack/redmine
Mac, Linux
• rbenvで複数バージョンのrubyを管理
17. Plugin Generator
$ $ ruby script/rails generate redmine_plugin redmine_demo
create plugins/redmine_demo/app
create plugins/redmine_demo/app/controllers
create plugins/redmine_demo/app/helpers
create plugins/redmine_demo/app/models
create plugins/redmine_demo/app/views
create plugins/redmine_demo/db/migrate
create plugins/redmine_demo/lib/tasks
create plugins/redmine_demo/assets/images
create plugins/redmine_demo/assets/javascripts
create plugins/redmine_demo/assets/stylesheets
create plugins/redmine_demo/config/locales
create plugins/redmine_demo/test
create plugins/redmine_demo/test/fixtures
create plugins/redmine_demo/test/unit
create plugins/redmine_demo/test/functional
create plugins/redmine_demo/test/integration
create plugins/redmine_demo/README.rdoc
create plugins/redmine_demo/init.rb
create plugins/redmine_demo/config/routes.rb
create plugins/redmine_demo/config/locales/en.yml
create plugins/redmine_demo/test/test_helper.rb
プラグインのひな形を作成するコマンド
Redmineインストールディレクトリ直下で実行する
19. modelとcontrollerもスクリ
プトで生成
$ ruby script/rails generate redmine_plugin_model redmine_demo
sample_models field1:string field2:integer
create plugins/redmine_demo/app/models/sample_models.rb
create plugins/redmine_demo/test/unit/sample_models_test.rb
create plugins/redmine_demo/db/migrate/001_create_sample_models.rb
$ ruby script/rails generate redmine_plugin_controller redmine_demo Demo
sample_action
create plugins/redmine_demo/app/controllers/Demo_controller.rb
create plugins/redmine_demo/app/helpers/Demo_helper.rb
create plugins/redmine_demo/test/functional/Demo_controller_test.rb
create plugins/redmine_demo/app/views/Demo/sample_action.html.erb
テストコードのひな形も作成される
20. init.rb
Redmine::Plugin.register :redmine_demo do
name 'Redmine Demo plugin'
author 'Author name'
description 'This is a plugin for Redmine'
version '0.0.1'
url 'http://example.com/path/to/plugin'
author_url 'http://example.com/about'
end
プラグインの情報を定義する場所
Plugin Generatorが出力した内容を適宜書き
換える。
特に公開する場合は重要な情報となる。
32. twitterマクロ(from Wiki Extensions)
Redmine::WikiFormatting::Macros.register do
# マクロの説明
desc "Creates link to twitter account page.nn" +
" !{{twitter(user_name)}}n”
# マクロの定義
macro :twitter do |obj, args|
return nil if args.length < 1 #引数が無かったら何もしない
user_name = args[0].strip # 第一引数をuser_nameに代入
# twitterへのリンクを作成
link_to(h("@#{user_name}"), "http://www.twitter.com/#{user_name}").html_safe
end
end
40. Controller Hooksの書き方
class DemoHookListener < Redmine::Hook::Listener
!
def controller_issues_new_after_save(context = { })
project = context[:project]
request = context[:request]
!
#ここに処理を書く
end
end
• Listenerを継承したクラスを作成
• Hookと同じ名前のメソッドを定義