Redmine3.2の時に導入した、タグ付加用プラグイン(redmine_tagging)を4.1で稼働できるか検証しました。
新規作成するチケット(issue)には、タグ付きを実戦しているので、これがないと何かと不便。
そのため、4系に移行する際にも必要なプラグインとして考えており、これが動くまでは4系に移行に踏み切れず。
(もう一つ必要なプラグインがあって、それはknowledgebaseプラグイン。でもこちらはハードルが高いので悩みどころ)
3.2への導入のブログ記事はこちら。
(参考)
[redmine][plugin]TaggingPluginを導入してみました
https://blog.goo.ne.jp/system-oni800/e/0287a09988650ad2b6cb5432c5ece599
redmine4系には、専用のブランチがあって、それを使用して検証
(参考)
本家(redmine3.3)
https://github.com/Restream/redmine_tagging
redmine4用ブランチ
https://github.com/windviki/redmine_tagging
ところが、何度やっても、db:migrate処理でエラーとなって停止。
グーグル先生に問い合わせて、以下のページにヒット。
gemでdbのインデックスをremoveする際の考慮漏れ。
(参考)
acts-as-taggable-on導入時のエラー
https://teratail.com/questions/224720
ということで、db:migrateに使用する際のファイル(bitnami redmine stackの場合)、
の11行目の修正をして、
このあと、
設定に注意が必要なのは以前と変わらずだが、問題無し。
新規作成するチケット(issue)には、タグ付きを実戦しているので、これがないと何かと不便。
そのため、4系に移行する際にも必要なプラグインとして考えており、これが動くまでは4系に移行に踏み切れず。
(もう一つ必要なプラグインがあって、それはknowledgebaseプラグイン。でもこちらはハードルが高いので悩みどころ)
3.2への導入のブログ記事はこちら。
(参考)
[redmine][plugin]TaggingPluginを導入してみました
https://blog.goo.ne.jp/system-oni800/e/0287a09988650ad2b6cb5432c5ece599
redmine4系には、専用のブランチがあって、それを使用して検証
(参考)
本家(redmine3.3)
https://github.com/Restream/redmine_tagging
redmine4用ブランチ
https://github.com/windviki/redmine_tagging
ところが、何度やっても、db:migrate処理でエラーとなって停止。
[hogehoge@67c41f259dbb htdocs]# bundle install --no-deployment --without development test postgresql sqlite
・・・
Fetching gem metadata from https://rubygems.org/..........
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies.....
Fetching rake 13.0.1
・・・
For more info see:
https://github.com/svenfuchs/i18n/releases/tag/v1.1.0
Post-install message from acts-as-taggable-on:
When upgrading
Re-run the migrations generator
rake acts_as_taggable_on_engine:install:migrations
This will create any new migrations and skip existing ones
Version 3.5.0 has a migration for mysql adapter
[hogehoge@67c41f259dbb htdocs]# bundle exec rake --trace acts_as_taggable_on_engine:install:migrations
** Invoke acts_as_taggable_on_engine:install:migrations (first_time)
** Execute acts_as_taggable_on_engine:install:migrations
** Invoke railties:install:migrations (first_time)
** Invoke db:load_config (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:load_config
** Execute railties:install:migrations
Copied migration 2020XXXX050734_acts_as_taggable_on_migration.acts_as_taggable_on_engine.rb from acts_as_taggable_on_engine
Copied migration 2020XXXX050735_add_missing_unique_indices.acts_as_taggable_on_engine.rb from acts_as_taggable_on_engine
Copied migration 2020XXXX050736_add_taggings_counter_cache_to_tags.acts_as_taggable_on_engine.rb from acts_as_taggable_on_engine
Copied migration 2020XXXX050737_add_missing_taggable_index.acts_as_taggable_on_engine.rb from acts_as_taggable_on_engine
Copied migration 2020XXXX050738_change_collation_for_tag_names.acts_as_taggable_on_engine.rb from acts_as_taggable_on_engine
Copied migration 2020XXXX050739_add_missing_indexes_on_taggings.acts_as_taggable_on_engine.rb from acts_as_taggable_on_engine
[hogehoge@67c41f259dbb htdocs]# bundle exec rake --trace db:migrate
** Invoke db:migrate (first_time)
** Invoke db:load_config (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:load_config
** Execute db:migrate
== 2020XXXX050734 ActsAsTaggableOnMigration: migrating ========================
-- create_table(:tags, {:options=>" ENGINE=InnoDB", :id=>:integer})
-> 0.1824s
-- create_table(:taggings, {:options=>" ENGINE=InnoDB", :id=>:integer})
-> 0.0576s
-- add_index(:taggings, :tag_id)
-> 0.0699s
-- add_index(:taggings, [:taggable_id, :taggable_type, :context], {:name=>"taggings_taggable_context_idx"})
-> 0.0228s
== 2020XXXX050734 ActsAsTaggableOnMigration: migrated (0.3340s) ===============
== 2020XXXX050735 AddMissingUniqueIndices: migrating ==========================
-- add_index(:tags, :name, {:unique=>true})
-> 0.0844s
-- index_exists?(:taggings, :tag_id, {:name=>"index_taggings_on_tag_id"})
-> 0.0015s
-- remove_index(:taggings, {:column=>:tag_id, :name=>"index_taggings_on_tag_id"})
rake aborted!
StandardError: An error has occurred, all later migrations canceled:
Mysql2::Error: Cannot drop index 'index_taggings_on_tag_id': needed in a foreign key constraint: DROP INDEX `index_taggings_on_tag_id` ON `taggings`
/opt/redmine/ruby/lib/ruby/gems/2.5.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `_query'
・・・
グーグル先生に問い合わせて、以下のページにヒット。
gemでdbのインデックスをremoveする際の考慮漏れ。
(参考)
acts-as-taggable-on導入時のエラー
https://teratail.com/questions/224720
ということで、db:migrateに使用する際のファイル(bitnami redmine stackの場合)、
/opt/redmine/apps/redmine/htdocs/db/migrate/2020XXXX050735_add_missing_unique_indices.acts_as_taggable_on_engine.rb
の11行目の修正をして、
# remove_index ActsAsTaggableOn.taggings_table, :tag_id if index_exists?(ActsAsTaggableOn.taggings_table, :tag_id)
## --- ADD 2020/01/14
if index_exists?(ActsAsTaggableOn.taggings_table, :tag_id)
remove_foreign_key :taggings, :tags
remove_index ActsAsTaggableOn.taggings_table, :tag_id
end
## --- ADD 2020/01/14
このあと、
bundle exec rake --trace redmine:plugins:migrate
して、無事導入完了。設定に注意が必要なのは以前と変わらずだが、問題無し。
(赤字は、前回稼働確認時からバージョンが変更となっているもの)
導入確認済 plugins:(1/14現在) 3.4.6導入 バージョン 4.1.0導入検証 エラーメッセージ(rake時若しくはerror_log) 19 redmine_tagging 0.1.6 0.1.100★ 正常稼働 https://github.com/windviki/redmine_tagging