herokuでRedmine(1.2.1)を動かす(前編)

プライベートで Redmine を使いたくなったので heroku で動かしてみることにしました。 fluxflex を使った方が手軽なのかもしれませんが、自分なりにherokuの仕様やgitのワークフローを理解したかったのでまとめておきます。

制約

(8/21追記)
今回紹介する手順では、ファイルのアップロード・ダウンロード機能が完全には動作しないという制約があります。あらかじめご了承ください。

方針

まずherokuにアップすることを意識しつつ、ローカルでRedmineを動作させてみます。具体的には以下に留意します。

  1. Gitを使って作業する
    • herokuへのデプロイに必要
  2. 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へのデプロイについては次回まとめたいと思います。

関連エントリ

blog comments powered by Disqus