herokuにruby2.0、redmine2.5.3環境を構築するお話

初投稿です。はじめまして。

とりあえず、今月初めにHerokuにruby2.0のredmine環境を構築したお話を書いてみようと思います。

## 背景
redmineのプラグイン、redmine_backlogsを気に入っており、
職場のイントラ内で使用している。ただし、あまりスクラム的な開発はできていない。
そこで、自宅からアクセスでき、色々と試せるredmne環境をつくろうと思い立った。

## 前置き
* rubyのインストール、devkitのインストール、
bundler Gemのインストールは省略します
* Herokuのアカウント作成は省略します
* Heroku Toolbeltをインストールしています
* コンソールはGit Bashを使用しました
* gitについてはまだよく理解できていません。もしかしたら非推奨な手順入っているかもしれないです
* 後々推敲と称して修正します(多分)

## 手順

### heroku上に新規アプリを作成

```
heroku create app_name
```

### ローカルにredmineを構築
#### gitからclone
```
git clone https://github.com/redmine/redmine.git -b 2.5-stable
```
#### Gemfileの **末尾** に `ruby '2.0.0'` を追記
#### redmineルートディレクトリで以下のコマンドを実行

```
bundle install --without development test rmagick
```

### herokuへ上げるための前準備

#### .gitignoreから以下の行をコメントアウト

```
/config/configuration.yml
/config/email.yml
/config/initializers/session_store.rb
/config/initializers/secret_token.rb
/public/plugin_assets
/Gemfile.lock
/Gemfile.local
```

#### 作成したredmineルートディレクトリから、.gitを削除
※多分もっとスマートな方法がある

#### redmineルートディレクトリで `git init` を実行

#### redmineの設定ファイルを幾つか編集

/config/environment.rbを編集
`exit 1` と記述のある行をコメントアウト

#### Gemfile内の以下をコメントアウト

```
database_file = File.join(File.dirname(__FILE__), "config/database.yml")
if File.exist?(database_file)
  database_config = YAML::load(ERB.new(IO.read(database_file)).result)
  adapters = database_config.values.map {|c| c['adapter']}.compact.uniq
  if adapters.any?
    adapters.each do |adapter|
      case adapter
      when 'mysql2'
        gem "mysql2", "~> 0.3.11", :platforms => [:mri, :mingw, :x64_mingw]
        gem "activerecord-jdbcmysql-adapter", :platforms => :jruby
      when 'mysql'
        gem "activerecord-jdbcmysql-adapter", :platforms => :jruby
      when /postgresql/
        gem "pg", ">= 0.11.0", :platforms => [:mri, :mingw, :x64_mingw]
        gem "activerecord-jdbcpostgresql-adapter", :platforms => :jruby
      when /sqlite3/
        gem "sqlite3", :platforms => [:mri, :mingw, :x64_mingw]
        gem "activerecord-jdbcsqlite3-adapter", :platforms => :jruby
      when /sqlserver/
        gem "tiny_tds", "~> 0.6.2", :platforms => [:mri, :mingw, :x64_mingw]
        gem "activerecord-sqlserver-adapter", :platforms => [:mri, :mingw, :x64_mingw]
      else
        warn("Unknown database adapter `#{adapter}` found in config/database.yml, use Gemfile.local to load your own database gems")
      end
    end
  else
    warn("No adapter found in config/database.yml, please configure it first")
  end
else
  warn("Please configure your config/database.yml first")
end
```

続いて以下の行を追加

```
group :production do
  gem "pg", ">= 0.11.0", :platforms => [:mri, :mingw, :x64_mingw]
  gem "activerecord-jdbcpostgresql-adapter", :platforms => :jruby
end
```

#### セッションストアの初期化を実施
セッションストアの初期化はheroku上ではできないのでローカルで実行します。
※コメントにて何故できないかをご説明頂きました。感謝。

```
rake generate_secret_token
```

続いて以下のコマンドを実行

```
git remote add heroku 先ほど作成したアプリのgitURL
```

```
git add .
```

```
git commit -m "first commit"
```
※コメント内容は適したものに変更してください

### herokuへのアップロード

以下のコマンドを実行

```
git push heroku master
```
※pushでソースのアップロードが完了するとにheroku上で`bundle install`などが走る

#### heroku上のredmineのdb:migrateを実施

```
heroku run rake db:migrate RAILS_ENV=production
```

#### デフォルトデータの登録

```
heroku run rake redmine:load_default_data RAILS_ENV=production
```

#### heroku上のredmineを再起動

```
heroku restart
```

#### heroku上のredmineアプリのURLにアクセス確認

#### 正常に起動していた場合、adminのパスワード変更(重要)

#### 完了

## 参考にさせて頂いた記事の一覧
http://www.workabroad.jp/posts/1164
http://redmine.jp/guide/RedmineInstall/
http://qiita.com/takudo/items/71f52668060cc2a49c7e
http://blog.digital-squad.net/article/405317288.html
http://qiita.com/ogomr/items/53549e845ccf7a210663
http://rubyinstaller.org/
http://halucolor.blogspot.jp/2013/02/githerokuherokupush.html