sameersbn/redmine:4.1.0にEasy Ganttプラグイン(無料版)をインストール
ちょっとつまずいたので備忘録として投稿します。
まずは、プラグインをこちら
からダウンロードします。
メールでダウンロードURLを教えてもらうんですが、何故か届かずメールアドレス変えたり英語版サイトでやったりしたら3回目でメール届きました。(笑
ではsameersbn/redmineを立ち上げてください。
いらないかもですが、docker-compose.ymlはこんな感じ。
version: '3'
services:
redmine_postgresql:
image: sameersbn/postgresql:9.6-4
container_name: redmine_postgresql
environment:
- DB_USER=redmine
- DB_PASS=password
- DB_NAME=redmine_production
volumes:
- ./volumes/postgresql:/var/lib/postgresql
redmine:
image: sameersbn/redmine:4.1.0
container_name: redmine
depends_on:
- redmine_postgresql
environment:
- TZ=Asia/Tokyo
- DB_ADAPTER=postgresql
- DB_HOST=redmine_postgresql
- DB_PORT=5432
- DB_USER=redmine
- DB_PASS=password
- DB_NAME=redmine_production
- REDMINE_PORT=10083
- REDMINE_HTTPS=false
- REDMINE_RELATIVE_URL_ROOT=
- REDMINE_SECRET_TOKEN=
- REDMINE_SUDO_MODE_ENABLED=false
- REDMINE_SUDO_MODE_TIMEOUT=15
- REDMINE_CONCURRENT_UPLOADS=2
- REDMINE_BACKUP_SCHEDULE=
- REDMINE_BACKUP_EXPIRY=
- REDMINE_BACKUP_TIME=
- SMTP_ENABLED=false
- SMTP_METHOD=smtp
- SMTP_DOMAIN=www.example.com
- SMTP_HOST=smtp.gmail.com
- SMTP_PORT=587
- SMTP_USER=mailer@example.com
- SMTP_PASS=password
- SMTP_STARTTLS=true
- SMTP_AUTHENTICATION=:login
- IMAP_ENABLED=false
- IMAP_HOST=imap.gmail.com
- IMAP_PORT=993
- IMAP_USER=mailer@example.com
- IMAP_PASS=password
- IMAP_SSL=true
- IMAP_INTERVAL=30
ports:
- "10083:80"
volumes:
- ./volumes/redmine:/home/redmine/data
無事起動できることが確認できたら、ダウンロードしたzipファイルにEasyGanttFree-4.x.zipが入っているので、その中身のeasy_ganttをフォルダごと、ボリュームで指定したpluginsフォルダに保存します。
(今回の例で言うと./volumes/redmine/plugins/ですね)
保存しましたらredmineコンテナを再起動します。
[centos@centos ~]$ docker restart redmine
これでプラグインはインストールできるはずなのですが、
開いてみるとInternal errorが発生してしまいました。
(その前にREST APIは有効にしといてくださいね)
Redmineのproduction.logを確認すると以下のエラーが発生していました。
どうやらデータベースが作成できていない様子。
Completed 500 Internal Server Error in 60ms (ActiveRecord: 16.4ms)
ActionView::Template::Error (PG::UndefinedTable: ERROR: relation "easy_settings" does not exist
LINE 8: WHERE a.attrelid = '"easy_settings"'::regclas...
^
: SELECT a.attname, format_type(a.atttypid, a.atttypmod),
pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,
c.collname, col_description(a.attrelid, a.attnum) AS comment
FROM pg_attribute a
LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
LEFT JOIN pg_type t ON a.atttypid = t.oid
LEFT JOIN pg_collation c ON a.attcollation = c.oid AND a.attcollation <> t.typcollation
WHERE a.attrelid = '"easy_settings"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
):
12: nonWorkingWeekDays: EasyGantt.non_working_week_days,
13: holidays: [],
14: milestonePush: ((EasyGantt.easy_extensions? && !EasySetting.value('milestone_effective_date_from_issue_due_date')) ? true : false),
15: workDayDelays: EasySetting.value(:easy_gantt_relation_delay_in_workdays),
16: fixedRelations: false && EasySetting.value(:easy_gantt_fixed_delay),
17: defaultZoom: EasySetting.value(:easy_gantt_default_zoom),
18: paths: {
対処法としては、以下のコマンドでデータベースのマイグレーションができるようです。
[centos@centos ~]$ docker exec -it redmine bundle exec rake --trace db:migrate RAILS_ENV=production
** Invoke db:migrate (first_time)
** Invoke db:load_config (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:load_config
** Execute db:migrate
== 20150705172511 CreateEasySettings: migrating ===============================
-- table_exists?(:easy_settings)
-> 0.0003s
-- create_table(:easy_settings, {:id=>:integer})
-> 0.0052s
-- index_exists?(:easy_settings, [:name, :project_id], {:unique=>true, :name=>"index_easy_settings_on_name_and_project_id"})
-> 0.0015s
-- add_index(:easy_settings, [:name, :project_id], {:unique=>true})
-> 0.0014s
== 20150705172511 CreateEasySettings: migrated (0.0086s) ======================
== 20160519161300 CreateEntityAssignments: migrating ==========================
-- table_exists?(:easy_entity_assignments)
-> 0.0003s
-- create_table(:easy_entity_assignments, {:id=>:integer})
-> 0.0022s
-- add_index(:easy_entity_assignments, [:entity_from_type, :entity_from_id, :entity_to_type, :entity_to_id], {:name=>"entity_assignment_idx", :unique=>true})
-> 0.0015s
-- add_index(:easy_entity_assignments, :entity_from_id, {:name=>"entity_assignment_idx_from"})
-> 0.0013s
-- add_index(:easy_entity_assignments, :entity_to_id, {:name=>"entity_assignment_idx_to"})
-> 0.0013s
== 20160519161300 CreateEntityAssignments: migrated (0.0068s) =================
== 20190206121100 RemoveForeignKeyFromEasySettings: migrating =================
-- remove_foreign_key(:easy_settings, :projects)
-> 0.0025s
== 20190206121100 RemoveForeignKeyFromEasySettings: migrated (0.0026s) ========
** Invoke db:_dump (first_time)
** Execute db:_dump
** Invoke db:schema:dump (first_time)
** Invoke db:load_config
** Execute db:schema:dump
特にRedmineを再起動する必要はありません。
以下のように表示されれば成功です。
Redmine標準のガントチャートも改善しているようですが、
やっぱりEasy Ganttの方が使いやすいかなと思います。