Symfoware

Symfowareについての考察blog

Redmine 3.1系プラグインの作り方

Redmine 3.1系のプラグインの作り方を調べてみます。
Redmineの動作環境は、Debian 8 + Ruby 2.2 + Redmine 3.1.1です。

こちらを参考に進めていきます。
プラグイン チュートリアル



新しいプラグインの生成



コマンドを実行し、プラグインの雛形を生成します。
なお、redmineは/opt/redmine-3.1.1に配置しています。

コマンドは以下のとおり。


# export RAILS_ENV="production"
# ruby bin/rails generate redmine_plugin <plugin_name>




plugin_nameに任意の名前を指定します。
今回は「test_plugin」というプラグインを作ってみます。


# ruby bin/rails generate redmine_plugin test_plugin




こんな感じで、プラグインの雛形が生成されました。


# ruby bin/rails generate redmine_plugin test_plugin
     create plugins/test_plugin/app
     create plugins/test_plugin/app/controllers
     create plugins/test_plugin/app/helpers
     create plugins/test_plugin/app/models
     create plugins/test_plugin/app/views
     create plugins/test_plugin/db/migrate
     create plugins/test_plugin/lib/tasks
     create plugins/test_plugin/assets/images
     create plugins/test_plugin/assets/javascripts
     create plugins/test_plugin/assets/stylesheets
     create plugins/test_plugin/config/locales
     create plugins/test_plugin/test
     create plugins/test_plugin/test/fixtures
     create plugins/test_plugin/test/unit
     create plugins/test_plugin/test/functional
     create plugins/test_plugin/test/integration
     create plugins/test_plugin/README.rdoc
     create plugins/test_plugin/init.rb
     create plugins/test_plugin/config/routes.rb
     create plugins/test_plugin/config/locales/en.yml
     create plugins/test_plugin/test/test_helper.rb




plugins/test_plugin/init.rbを編集。
プラグインの作者などの情報を記載します。


  1. Redmine::Plugin.register :test_plugin do
  2. name 'Test Plugin plugin'
  3. author 'Symfoawre'
  4. description 'This is a plugin for Redmine'
  5. version '0.0.1'
  6. url 'http://example.com/path/to/plugin'
  7. author_url 'http://example.com/about'
  8. end





ここまでできたらデバッグサーバーを起動。


# ruby bin/rails server webrick -e production --bind=0.0.0.0




これだけで、[管理] - [プラグイン]の項目に表示されるようになります。

653_01.png





コントローラーの作成



画面に何か表示させてみたいので、コントローラーとビューを作成します。
生成の構文は以下のとおり。


# ruby bin/rails generate redmine_plugin_controller <plugin_name> <controller_name> [<actions>]



plugin_nameは先ほどと同じ名称。
controller_nameがURLの一部となります。
controller_name/actionsでアクセスすることになります。

とりあえず、sample/indexというURLでビューが表示されるようにしてみます。


# ruby bin/rails generate redmine_plugin_controller test_plugin sample index




生成されました。


# ruby bin/rails generate redmine_plugin_controller test_plugin sample index
     create plugins/test_plugin/app/controllers/sample_controller.rb
     create plugins/test_plugin/app/helpers/sample_helper.rb
     create plugins/test_plugin/test/functional/sample_controller_test.rb
     create plugins/test_plugin/app/views/sample/index.html.erb




plugins/test_plugin/app/controllers/sample_controller.rbを編集。
最初はこんな状態です。


  1. class SampleController < ApplicationController
  2. unloadable
  3. def index
  4. end
  5. end




Ruby on RailsどころかRubyも初心者なので、とりあえず変数をviewに送ってみます。


  1. class SampleController < ApplicationController
  2. unloadable
  3. def index
  4.     @name = 'コントローラーから名前を設定'
  5. end
  6. end




plugins/test_plugin/app/views/sample/index.html.erbを編集。
コントローラーから送られた値を表示してみます。


  1. <h2>SampleController#index</h2>
  2. <%= @name %>




コントローラーを追加しただけでは、URLは自動的に生成されません。
plugins/test_plugin/config/routes.rbを編集して、ルートを追加します。


  1. # Plugin's routes
  2. # See: http://guides.rubyonrails.org/routing.html
  3. get 'sample', :to => 'sample#index'




デバッグサーバーを起動。


# ruby bin/rails server webrick -e production --bind=0.0.0.0




http://[サーバーIP]:3000/sampleを表示してみます。

653_02.png

表示出来ました。

URLを知らないとプラグインにアクセスできない状態です。
次は、任意の箇所にメニューを表示してみます。
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2015/11/15(日) 17:27:53|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<Redmine 3.1系プラグイン作成 メニューの追加 | ホーム | Qiitaのクローン「Lodge」をDebian 8で動作させる>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1818-a739e1e2
この記事にトラックバックする(FC2ブログユーザー)