-
Notifications
You must be signed in to change notification settings - Fork 49
MigrateToRM20
※ このページはPorting plugins to Redmine 2の情報と、ALMiniumプロジェクトでプラグインの移行を行なった経験をもとに作成さしました。Wikiなので、自由に追記などしてください。
※ Redmine 2.0.xにプラグインを移植するも参考になります。
Redmine2.0用にプラグインをマイグレーションした際のノウハウをメモしておきます。なお、Redmine 2.0からは、rake db:migrate_pluginsでプラグインのセットアップを行っていましたが、
$ RAILS_ENV=production rake redmine:plugins:migrate
に変更になっているので注意してくださ~い。
init.rbの中で、
require 'dispatcher'
Dispatcher.to_prepare :redmine_scm_plugin do
...
endとDispatcherを利用するとエラーになります。
次のようにRails.configuration.to_prepareを利用するように変更し、require文を削除します。
Rails.configuration.to_prepare do
...
endcontent_tagで追加したタグを画面に表示すると、Redmine2.0から自動的にエスケープされて表示され、正しくタグが表示されません。
content_tag(:div, `<button>ここ押せワンワン</button>'.html_safe)
のように、html_safeを利用すると正しくタグが表示されるようになります。
ja.ymlが読み込まれず、ロケールがないというメッセージが表示される。
Redmine2.0からプラグイン名とプラグインディレクトリが同じディレクトリである必要があります。 例えば、
Redmine::Plugin.register :redmine_scm_creator do
name 'SCM Creator'
...
endと記述されている場合、プラグインのフォルダ名をredmine_scm_creatorにする必要があります。
データベースのマイグレーションが実行されず、プラグインが正しく動作しません。
上記の例と同じで、Redmine2.0からプラグイン名とプラグインディレクトリを同じディレクトリに配置してください。
Wikiのヘルプクラスをapp/helpersフォルダから、lib/フォルダの下に移動する必要があります。詳細は、redcarpet formatterのコード https://github.com/alminium/redcarpet_formatter のredmine-2.0.xブランチのコードをご覧ください。
ログの出力方法が変更になりました。下記のコードはエラーとなります。
RAILS_DEFAULT_LOGGER.info("debug mesage")
Rails.loggerを使ってください。
Rails.logger.info("debug message")
path = "#{RAILS_ROOT}/tmp/" + key
RAILS_ROOTの代わりにRails.rootを利用します。
path = "#{Rails.root}/tmp/" + key
Routingの定義がRedmine1.4.xで利用できる方法で定義するとエラーになります。
ActionController::Routing::Routes.draw do |map|
map.connect 'users/get_avatar/:id', :controller => 'users', :action => 'get_avatar', :id=>/\d+/, :conditions => {:method => [:get, :post]}
end
RedmineApp:Application.routesを利用してください。また、:viaにメソッドを指定します。
RedmineApp::Application.routes.draw do
match 'avatar/get_avatars', :to => 'avatar#get_avatar'
end
オブサーバーの登録が従来の方法ではエラーになります。
ActiveRecord::Base.observers << :repository_observer
###解決方法 次のようにRails.configurationを利用して登録します。
Rails.configuration.active_record.observers << :repository_observer
Redmine1.xまではテンプレート名として、
- *.rhtml
が利用できました。Redmine2.0.xからは、
- *.html.erb
というファイル名にする必要があります。ファイル名を変更してください。
Ruby1.9.3では、Ruby1.8で使えたString#eachが使えません。代わりにString#each_lineを利用してください。
@text.each do |line|
...
end
@text.each_line do |line|
...
end
Redmine 2.0対応されたプラグインのリストをあげておくので、参考にしてください。
- Code Reviewプラグイン
- https://bitbucket.org/haru_iida/redmine_code_review/
- Redcarpet Formatterプラグイン(redmine-2.0.xブランチ)
- https://github.com/alminium/redmine_redcarpet_formatter
- SCM Creatorプラグイン
- https://github.com/okamototk/redmine_scm_creator
- Spend Time Columnプラグイン(redmine-2.0.xブランチ)
- https://github.com/mikoto20000/redmine_spent_time_column
- Git Branch Hookプラグイン(redmine-2.0.xブランチ)
- https://github.com/mikoto20000/redmine_git_branch_hook
Redmine 2.0.x+Ruby1.9.3で動作させるのは面倒です。ALMiniumを利用すれば、一括セットアップしてくれます。下記の手順で、Redmine2.0.x版のALMiniumをインストールしてください(サポートプラットフォームは、CentOS6.2とUbuntu12.04)。
$ git clone https://github.com/alminium/alminium
$ cd alminium
$ git checkout redmine-2.0.x
$ sudo su -
# bash smelt
Redmine 2.0対応版のALMiniumはまだ開発途上なのでご利用の際は注意してください。ALMiniumプロジェクトでは、ALMiniumの開発を手伝ってくれる人、宣伝くれる人を募集しています。是非ご参加ください!!