いれたてほやほやの rvm に redmine 入れて heroku にデプロイしてみる
http://d.hatena.ne.jp/alpha_neet/20111024/1319484040 の続きです。
自分の趣味開発でも redmine を使ってタスク管理をしようと試してみました。
ここが自分の 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 の redmine の rails のバージョンは 2.3.11 です)
英語読んだほうがいいかもしれません。
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 って入力する)
なんか 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 masterheroku 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/
管理者権限を持っているとチケットの作成が出来てもステータスの変更が出来ない
設定 > メンバー で自分を追加してやるとステータス変更が可能になる。