Herokuにcandycaneをインストールする
HerokuにRedmineをインストールしたかったのだが、
RailesどころかGemやらRubyやらに不慣れというかNO知識なため、なんだかうまくいかず。
宗旨替えしてcandycaneというCakePHPで作られたRedmineクローン的なものをインストールしてみた。
基本的にはTakayuki Miwaさんのブログ
http://tkyk.name/blog/2012/12/06/candycane-on-heroku/
で、書いてある通りそのまま。
1.https://github.com/tkyk/candycane/tree/release-heroku をcloneしてrelease-herokuブランチに変更
2.PHP環境構築のためにiphotingさんのbuildpack
heroku create -s cedar -b git://github.com/iphoting/heroku-buildpack-php-tyler.git --app [アプリ名]
実行してアプリ環境作成
3.HerokuのサイトにてaddonでpostgresSQLを追加
4.release-herokuブランチをHerokuにpush
5.環境変数にinstall_candycaneを追加
heroku config:add install_candycane=1
6.ブラウザで開いて初期設定
ここで、初期設定が終わったと思ったらブラウザが真っ白になってうんともすんともな雰囲気になって焦る。
が、おちついて・・・
⑦環境変数install_candycaneの削除
heroku config:remove install_candycane
もう一度ブラウザでアクセスしてみると、キター!
これでおわり。
なのだが、Takayuki Miwaさんがforkしたバージョンが古い(今から1年前)だからだと思うんだけど
candycane側のバグがあるようです。
candycaneの環境設定で「認証が必要」の状態
(認証されてないユーザー、非ログインユーザーは中身を見ることができない)
にすると、そもそもcandycaneにうまくログインできなくなります。
これを修正するために、
app/Controller/AppController.php
public function require_login() { if (!$this->current_user || !$this->current_user['logged']) { $this->redirect( '/account/login?back_url=' . urlencode( 'http://' . env('HTTP_HOST') . env('REQUEST_URI') ) ); ...後略
を以下のように修正してpushする
public function require_login() { if (!$this->current_user || !$this->current_user['logged']) { $this->redirect( '/account/login?back_url=' . urlencode(Router::url($this->request->here(false), true)) ); ...後略
おそらくこれ以外にも本家のcandycane https://github.com/yandod/candycane でfixされたbugが存在すると思うので、本来であればTakayuki Miwaさんがforkしたバージョンを使い続けるのではなく
・本家の修正をマージしたものをTakayuki Miwaさんのリポジトリにプルリクエスト投げる。
or
・本家にHerokuバージョンをプルリクエストしてマージしてもらう
いずれかが良いと思うのですが・・ごめんなさいやってません。
iphotingさんのbuildpack実行後に本家のcandycaneをインストもためしてみようと思いつつやってませんごめんなさい。