herokuでRedmine(1.2.1)を動かす(前編)
プライベートで Redmine を使いたくなったので heroku で動かしてみることにしました。 fluxflex を使った方が手軽なのかもしれませんが、自分なりにherokuの仕様やgitのワークフローを理解したかったのでまとめておきます。
制約
(8/21追記)
今回紹介する手順では、ファイルのアップロード・ダウンロード機能が完全には動作しないという制約があります。あらかじめご了承ください。
方針
まずherokuにアップすることを意識しつつ、ローカルでRedmineを動作させてみます。具体的には以下に留意します。
- Gitを使って作業する
- herokuへのデプロイに必要
- gemのインストールは bundler を使う
- herokuではbundlerを使ってgemがインストールされる
- 参照: Managing Gems
Redmine本家のインストールガイド を参照しながら作業することにします。
準備
以下を準備します。インストール方法などはお任せします。
- Ruby
- バージョンは1.8.7
- RedmineはRuby1.9をサポートしていない(バージョン1.2.1時点)
- Git
- SQLite3
- ローカル動作用DBMSとして
- MySQL, PostgreSQLでもかまいません
ソースコードの入手
公式なミラーではないそうですが githubのリポジトリ をcloneします。
$ git clone https://github.com/edavis10/redmine.git $ cd redmine
herokuに合わせた追加修正が必要なので、最新バージョンのタグからブランチを切って作業します。
$ git checkout -b 1.2.1-for-heroku 1.2.1
gemのインストール
前述のとおり、herokuではgemのインストールにbundlerを使うのでインストールしておきます。 rvm などをお使いの方はその前に設定をどうぞ。
$ gem install bundler
Gemfileに以下を記述し、
source "http://rubygems.org" gem "rake", "0.8.7" gem "rails", "2.3.11" gem "rack", "1.1.1" gem "i18n", "0.4.2" group :development do # お使いのDBMSに合わせたものをどうぞ gem "sqlite3", "1.3.4" end
インストールします。
$ bundle install
Rails2.3でBundlerを使うための修正
以下に従ってソースコードとGemfileを修正しておきます。
Gemfileには以下を追記しました。rubytreeとcoderayはvendor/gems以下に含まれているので、pathオプションを指定して参照させています。追記が済んだら`bundle check`を実行してgemの参照に問題がないか確認しておきましょう。
gem "rubytree", "0.5.2", :require => 'tree', :path => 'vendor/gems/rubytree-0.5.2' gem "coderay", "0.9.7", :path => 'vendor/gems/coderay-0.9.7'
database.ymlの設定
お使いのDBMSに合わせてconfig/database.ymlを記述してください。
# sqlite3用 development: adapter: sqlite3 database: db/development.sqlite3
初期データの投入など
用意されているRakeタスクを実行します。
$ rake generate_session_store $ rake db:migrate $ rake redmine:load_default_data
ローカル用の設定は以上なので動作確認してみます。
$ script/server
ローカルリポジトリにコミット
ここまでの作業内容をローカルのリポジトリにコミットしておきます。以下のファイルがコミット対象になるかと思います。
- Gemfile
- Gemfile.lock
- config/boot.rb
- config/environment.rb
- config/preinitializer.rb
$ git add . $ git commit
herokuへのデプロイについては次回まとめたいと思います。