いれたてほやほやの rvm に redmine 入れて heroku にデプロイしてみる

http://d.hatena.ne.jp/alpha_neet/20111024/1319484040 の続きです。


自分の趣味開発でも redmine を使ってタスク管理をしようと試してみました。


http://neetmine.heroku.com/


ここが自分の redmine の url でつ。
がんばってスケジュール管理しまっ>ω<;


とりあえず色々試したら動いたという感じなので、
もしかしたらセキュリチー的にダメことしてるかもしれません。


redmine1.2.1 じゃなければダメ><のような場合でなければ http://docs.komagata.org/4558 のような先駆者の安全そうなの使ったほうがいいと思います!!


https://github.com/komagata/redmine/blob/0.9.6-for-heroku/config/environment.rb#L55
ちょっとだけ気になったのが、これは大丈夫系なんでしょうか?
セッションハイジャックという単語を知ってるだけ程度のセキュリティレベルしかないので正直分からないんですがorz

heroku で動くように redmine に修正を施したものを github にアップしました

https://github.com/alphaneet/redmine-1.2.1-for-heroku


見た感じ github にある redmine をフォークして自分用にブランチ切るのが通常の手順っぽいんですが、
gitの使い方さっぱり分かんないんで適当にやりましたorz

git clone git://github.com/alphaneet/redmine-1.2.1-for-heroku.git
cd redmine-1.2.1-for-heroku
ruby -e "c=('a'..'z').to_a+('A'..'Z').to_a+('0'..'9').to_a;puts Array.new(48){c[rand(c.size)]}.join"
vim config/environment.rb

  • config/environment.rb
   config.action_controller.session = { 
     :key => "_myapp_session", 
     :secret => ruby -e "c=('a'..'z').to_a+('A'..'Z').to_a+('0'..'9').to_a;puts Array.new(48){c[rand(c.size)]}.join" で表示された文字列を貼り付ける
   }

git commit -a -m 'set secret'
gem install heroku taps


heroku create 'project name'
heroku stack:migrate bamboo-ree-1.8.7
git push heroku master
heroku db:push
heroku open

heroku db:push で大丈夫か?と聞かれるので自分のプロジェクト名を入力して問題ないと答えます。
heroku stack:migrate bamboo-ree-1.8.7 が上手く動かなかった場合は、heroku stack で使用出来る ruby のバージョンの一覧を取得して、適切なものを選択してください。


以降は動かすまでの手順のメモ


http://www.redmine.org/projects/redmine/wiki/Guide(英語)や
http://redmine.jp/guide/(日本語)を参考にしました。


日本語のほうの情報はちょっと古いんで(現在 trunk の redminerails のバージョンは 2.3.11 です)
英語読んだほうがいいかもしれません。

環境

ruby 1.8.7
redmine 1.2.1 (2011-07-11)
gem
gem 1.3.7
heroku 2.11.0
rails 2.3.11
sqlite3-ruby 1.3.3
i18n 0.4.2
rubytree 0.8.1
coderay 0.9.8
taps 0.3.23

gem のバージョンを 1.3.7 に落とす

http://d.hatena.ne.jp/ruedap/20110221/ruby_gem_update_version_down を参考に

screen で別窓開くと rvm は default に戻ってしまうので、誤爆を防ぐためにも default を 1.8.7 にしときます。

rvm --default use 1.8.7
rvm info


gem -v
gem install rubygems-update -v 1.3.7
update_rubygems
gem -v

rails をインストールして試しに scaffold

cd ~/work(パスはどこでもいい)
gem install rails -v=2.3.11
gem install sqlite3-ruby


rails hoge
cd hoge
script/generate scaffold list name:string


rake db:migrate
script/server

お決まりのやつでちゃちゃっと作って http://localhost:3000/lists を開いて上手く動いてるか確認。

ローカルに redmine を入れてみる

cd ~/work/projects(パスはどこでもいい)
wget http://rubyforge.org/frs/download.php/75099/redmine-1.2.1.zip
unzip redmine-1.2.1.zip


cd redmine-1.2.1
cp config/database.yml.example config/database.yml
vim config/database.yml

  • config/database.yml
production:
  adapter: sqlite3
  database: db/production.sqlite3

development:
  adapter: sqlite3
  database: db/development.sqlite3

test:
  adapter: sqlite3
  database: db/test.sqlite3

gem install bundle
vim Gemfile

  • Gemfile
source 'http://rubygems.org'

gem 'rails', '2.3.11'
gem 'i18n', '0.4.2'
gem 'rubytree'
gem 'coderay', '~>0.9.7'

bundle install
rake generate_session_store


RAILS_ENV=production rake db:migrate
RAILS_ENV=production rake redmine:load_default_data


Select language: bg, bs, ca, cs, da, de, el, en, en-GB, es, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en] ja(← ja って入力する)


ruby script/server webrick -e production

なんか WARNING 出まくりますが、とりあえず気にしないことに!


んで http://localhost:3000 にアクセスしてみる。動いたら成功
右上から login: admin, password: admin でログイン。

heroku 用に追加と修正をする

http://www.nslabs.jp/redmine-install.rhtml
http://yukku0423.wordpress.com/2011/04/16/redmine-on-heroku/ を参考に

mkdir tmp/files
mkdir tmp/plugin_assets


touch tmp/files/dummy
touch tmp/plugin_assets/dummy


vim lib/redmine/menu_manager.rb
vim app/models/attachment.rb
vim vendor/plugins/engines/lib/engines.rb
vim config/environment.rb
vim .gitignore

  • lib/redmine/menu_manager.rb(30行目ぐらい)
       def initialize(name, content = nil)
         old_initilize(name, content)
         @last_items_count = 0
+        @childrenHash ||= {}
         extend(InstanceMethods)
  • app/models/attachment.rb(46行目ぐらい)
   cattr_accessor :storage_path
-  @@storage_path = Redmine::Configuration['attachments_storage_path'] || "#{RAILS_ROOT}/files"
+  @@storage_path = Redmine::Configuration['attachments_storage_path'] || "#{RAILS_ROOT}/tmp/files"
 
   def validate
  • vendor/plugins/engines/lib/engines.rb(51行目ぐらい)
   mattr_accessor :public_directory
-  self.public_directory = File.join(RAILS_ROOT, 'public', 'plugin_assets')
+  self.public_directory = File.join(RAILS_ROOT, 'tmp', 'plugin_assets')
  • config/environment.rb(21行目ぐらい)
 Rails::Initializer.run do |config|
+  config.action_controller.session = { 
+    :key => "_myapp_session", 
+    :secret => "ruby -e "c=('a'..'z').to_a+('A'..'Z').to_a+('0'..'9').to_a;puts Array.new(48){c[rand(c.size)]}.join" で表示された文字列を貼り付ける" 
+  }
   # Settings in config/environments/* take precedence those specified here
  • .gitignore
 /db/*.db
-/db/*.sqlite3
 /db/schema.rb
 /files/*
 /lib/redmine/scm/adapters/mercurial/redminehelper.pyc
@@ -16,7 +15,6 @@
 /log/mongrel_debug
 /public/dispatch.*
 /public/plugin_assets
-/tmp/*
 /tmp/cache/*

heroku で使用する ruby を 1.8.7 にする

現在の heroku のデフォルトの ruby は 1.9.2 なので 1.8.7 にする。
http://d.hatena.ne.jp/ruedap/20110511/ruby_heroku_version_change を参考に

gem install heroku
git init
heroku create 'project name'
heroku stack
heroku stack:migrate bamboo-ree-1.8.7

heroku にデプロイする

git add .
git commit -m 'first commit'
git push heroku master

heroku rake db:migrate

なぜか heroku rake redmine:load_default_data が通りません・ω・;
ローカルでデータベースを作成して heroku db:push で入れる方法もあるます。


一応なくても redmine 上で設定すれば動くので heroku open で redmine のトップページが開けたら成功です。

heroku で何か困ったら

heroku logs ログ出力
heroku console rails の script/console を呼び出せる。そこで `ls` とかするとシェルも叩ける

redmine で最初困ったこと

http://redmine.jp/faq/issue/cannot-change-issue-status/


管理者権限を持っているとチケットの作成が出来てもステータスの変更が出来ない
設定 > メンバー で自分を追加してやるとステータス変更が可能になる。