Redmineでハマった件

研修担当の水谷です。

うちのヒヨっ子達が日々日記を書いてくれていますが、私は技術的な情報を書いていこうと思います。

当社では社内案件にてRedmineを運用していますが、「プラグインを投入しておけ」と言われたので渋々入れることにしました。アカウントください。(私は部門が違うためRedmine使ってません)

ちなみにアカウントは社長アカウント(管理者)を拝借して自分用アカウント作りました。

その中でとあるプラグイン投入時にハマったためメモ。

今回の主役は「Easy Gantt」というプラグインで、環境はRedmine 3.1.6.stable.15582です。

Redmineのガントチャートをお手軽に弄るようにできるプラグインです。

1つ目の壁:「ダウンロードできない」

「何言ってんだこいつ」って感じですね。一昨日きやがれ

このプラグイン、公式サイトでメアドを登録するとダウンロードリンクがメールで飛んでくるんですが、登録してメールを受信するまでが驚異の10時間。

「自動生成メールだったらすぐ飛んで来るやろ」みたいな甘い考えは通じず、自社メールだからダメなのかとYahoo!メールのアカウントをわざわざ作って見たものの受信しておらず、ついさっきメールが会社のほうに飛んできました。(当社はGmail使ってます)

キレるかと思いました。

 

2つ目の壁:「プラグイン入れたらRedmineが死んだ」

プラグインをいつも通り入れたらKONOZAMA

konozama

 

あ?なんやこれ

ログを見ると


Could not find gem 'redmine_extensions' in any of the gem sources listed in your Gemfile or available on this machine.


などと言われており、bundleあたりかなどと思い立ち、もっかい入れなおすかーと


[Redmine@Redmine easy_gantt]$ bundle install
Your Gemfile has no gem server sources. If you need gems that are not already on
your machine, add a line like this to your Gemfile:
source ‘https://rubygems.org’
Could not find gem ‘redmine_extensions’ in any of the gem sources listed in your
Gemfile or available on this machine.


はぁ?って感じ。チョベリバ。

ソースがないとか言われたんだが?

腹が立ったんで無理やり「your/redmine/plugin/easy_gantt/Gemfile」の先頭に


source ‘https://rubygems.org’


を追記。

どうやら内部的にsudoやってるっぽいのでRedmineユーザーにsudo権限追加。


[Redmine@Redmine easy_gantt]$ bundle install
Fetching gem metadata from https://rubygems.org/
Fetching version metadata from https://rubygems.org/
Fetching dependency metadata from https://rubygems.org/
Resolving dependencies….
Installing rake 11.2.2
Installing i18n 0.7.0
Installing json 1.8.3 with native extensions
Installing minitest 5.9.0
Installing thread_safe 0.3.5
Installing builder 3.2.2
Installing erubis 2.7.0
Installing mini_portile2 2.1.0
Installing pkg-config 1.1.7
Using rack 1.6.4
Installing mime-types-data 3.2016.0521
Installing arel 6.0.3
Using bundler 1.12.5
Installing concurrent-ruby 1.0.2
Installing thor 0.19.1
Installing tzinfo 1.2.2
Installing nokogiri 1.6.8 with native extensions
Installing rack-test 0.6.3
Installing mime-types 3.1
Installing sprockets 3.7.0
Installing activesupport 4.2.7.1
Installing loofah 2.0.3
Installing mail 2.6.4
Installing rails-deprecated_sanitizer 1.0.3
Installing globalid 0.3.7
Installing activemodel 4.2.7.1
Installing rails-html-sanitizer 1.0.3
Installing rails-dom-testing 1.0.7
Installing activejob 4.2.7.1
Installing activerecord 4.2.7.1
Installing actionview 4.2.7.1
Installing actionpack 4.2.7.1
Installing actionmailer 4.2.7.1
Installing railties 4.2.7.1
Installing sprockets-rails 3.2.0
Installing rails 4.2.7.1
Installing redmine_extensions 0.1.13
There was an error while trying to write to
`/var/lib/redmine/plugins/easy_gantt/Gemfile.lock`. It is likely that you need
to grant write permissions for that path.


ウゴイタアアアアアア

 

 

 

とでも思っていたのか?(CV:ブ○リー)

ここで思い出したかのようにスナップショット取得(忘れてた…)

ええい、ままよ!といきり立ち


[root@Redmine easy_gantt]# bundle exec rake redmine:plugins:migrate RAILS_ENV=production
(in /var/lib/redmine)
rake aborted!
NameError: uninitialized constant ActionDispatch::XmlParamsParser
/var/lib/redmine/config/application.rb:52:in `<class:Application>’
/var/lib/redmine/config/application.rb:8:in `<module:RedmineApp>’
/var/lib/redmine/config/application.rb:7:in `<top (required)>’
/var/lib/redmine/Rakefile:5:in `require’
/var/lib/redmine/Rakefile:5:in `<top (required)>’
/usr/local/bin/bundle:23:in `load’
/usr/local/bin/bundle:23:in `<main>’
(See full trace by running task with –trace)


なんか色々モジュール足らん言われてるんだが?


[Redmine@Redmine easy_gantt]$ bundle update


あぷでしてみた。

結果ダメー

 

【解決編】

で、いろいろググったところ下記の情報が

Could not find rake with bundle exec

.bundle/configの中に「BUNDLE_DISABLE_SHARED_GEMS: ’1′」という行があるらしく、これを消せと。



BUNDLE_PATH: vendor/bundle
BUNDLE_WITHOUT: development:test
BUNDLE_DISABLE_SHARED_GEMS: true


ああん?ねぇぞ…あるわ

「1」ってのはフラグが立ってることを示すことが多く、true代わりに使われたりします。

バージョン差異か環境差異ですかねぇ…

ここんところ調べたら、「システムにインストールされたGemは使用しない」ということらしいです。使いたいのに使えない状態になってたっぽい?

とりあえず消す。

で、もっかい「rake –trace db:migrate RAILS_ENV=production」を実行


[root@Redmine easy_gantt]# rake –trace db:migrate RAILS_ENV=production
(in /var/lib/redmine)
/var/lib/redmine/vendor/bundle/ruby/2.2.0/gems/htmlentities-4.3.1/lib/htmlentities/mappings/expanded.rb:465: warning: duplicated key at line 466 ignored: “inodot”
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Invoke db:load_config (first_time)
** Execute db:load_config
** Execute db:migrate
== 20150705172511 CreateEasySettings: migrating ===============================
— table_exists?(:easy_settings)
-> 0.0008s
— create_table(:easy_settings)
-> 0.3879s
— index_exists?(:easy_settings, [:name, :project_id], {:unique=>true})
-> 0.0008s
— add_index(:easy_settings, [:name, :project_id], {:unique=>true})
-> 0.2089s
== 20150705172511 CreateEasySettings: migrated (0.5988s) ======================

== 20160519161300 CreateEntityAssignments: migrating ==========================
— table_exists?(:easy_entity_assignments)
-> 0.0009s
— create_table(:easy_entity_assignments)
-> 0.0822s
— add_index(:easy_entity_assignments, [:entity_from_type, :entity_from_id, :entity_to_type, :entity_to_id], {:name=>”entity_assignment_idx”, :unique=>true})
-> 0.2168s
— add_index(:easy_entity_assignments, :entity_from_id, {:name=>”entity_assignment_idx_from”})
-> 0.1952s
— add_index(:easy_entity_assignments, :entity_to_id, {:name=>”entity_assignment_idx_to”})
-> 0.2237s
== 20160519161300 CreateEntityAssignments: migrated (0.7193s) =================

** Invoke db:_dump (first_time)
** Execute db:_dump
** Invoke db:schema:dump (first_time)
** Invoke environment
** Invoke db:load_config
** Execute db:schema:dump


おお、いったわ。

さてさて、apacheを再起動して、結果のほどは…

redmine

ウゴイタアアアアア

さてさて、プラグインの動作を確認しましょう

 

gantt

あーこれはRedmine側の設定っすね

管理者権限でログインして「管理」→「設定」→「認証」タブ(2.x系は「API」タブ)で「RESTによるWebサービスを有効にする」にチェック

settings

さてさて…

gantt2

 

ウゴイタアアア(サンプルが)

まぁ、とはいってもこれはPRO版にしないといけないらしいので、今回はスルー。

プロジェクトごとには見えるのかな?

gantt3

見えた…けど、いちいちサンプル読み込まれるの鬱陶しいな…

gantt4

お、いいじゃないっすか。

これを全プロジェクトに適用すればオッケーっすね。

毎度毎度Ruby、というかbundle/rake/gemにはだいぶ悩まされます。