#はじめに
普段は、ゲームリンクスというサークル名でフリーのノベルゲームなどの制作をしています。
今回、プロジェクト管理ツールであるRedmineをゲームリンクスでのゲーム制作に導入することにしました。
本記事は、Heroku上にデプロイした時の手順をまとめたものとなります。
#導入に至った経緯
まず、昨年から外部のサークルなどと共同でゲーム制作を行うことが増えてきました。
とはいえ、互いの進捗状況を確認するすべなどもない状況でしたし、なにより複数の制作プロセスをチェックすることが負担になっていました。
そういった負担の軽減と進捗状況の見える化を行うために、HerokuへRedmineを運用しようと思い立ちました。
それと、少し前からシナリオの執筆にGitを使いだしてかなり効率的に作業が進んだこともあり、OSSのプロジェクト管理ツールを導入しようと検討していたことも背景の一つにありますねー
#実際のデプロイまで
##ざっくりとした手順
基本的には、こちらの記事に書いてある通りに進めていきます。
How to deploy Redmine to Heroku
大まかな流れとしては、記事にもあるように、
1:ソースコードを clone
2:gitignore を弄る
3:Gemfile を弄る
4:bundle install & rake generate_secret_token を実行
5:Heroku へデプロイ
といった感じですね。
あと、HerokuへのデプロイにはHerokuアカウントと Heroku CLI を使用します。
Herokuアカウントの作成や Heroku CLI のインストールは、この辺の記事が参考になります。
コマンドでHerokuを操作する Heroku CLI のインストール
##ローカルでの作業
まずは、Redmineのソースコードを clone します。
git clone https://github.com/redmine/redmine.git -b 3.4-stable
次に、作業ディレクトリを redmine に移します。
cd redmine
gitignore を編集して、以下のファイル項目を削除します。
Gemfile.lock
Gemfile.local
public/plugin_assets
config/initializers/session_store.rb
config/initializers/secret_token.rb
config/configuration.yml
config/email.yml
次に、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.4.6", :platforms => [:mri, :mingw, :x64_mingw]
when /postgresql/
gem "pg", "~> 0.18.1", :platforms => [:mri, :mingw, :x64_mingw]
when /sqlite3/
gem "sqlite3", (RUBY_VERSION < "2.0" && RUBY_PLATFORM =~ /mingw/ ? "1.3.12" : "~>1.3.12"),
:platforms => [:mri, :mingw, :x64_mingw]
when /sqlserver/
gem "tiny_tds", (RUBY_VERSION >= "2.0" ? "~> 1.0.5" : "~> 0.7.0"), :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 :development, :test do
gem 'sqlite3'
end
group :production do
gem 'pg', '~> 0.20'
gem 'rails_12factor'
gem 'thin' # change this if you want to use other rack web server
end
Gemfile の編集が終わったら bundle install を行います。
bundle install --without production test rmagick
rmagick を除いているのは、単にウチの環境ではコケるためですね。
あと、rmagickをインストールするのが面倒くさかったので……
bundle install が終わった後に、下記のコマンドを実行します。
rake generate_secret_token
あとは、Herokuでデプロイするための変更をいくつか加えます。
まずは、config/environment.rb の exit 1 をコメントアウト(又は削除)します。
exit 1
次に、config/application.rb 内に以下の記述を追加します。
config.assets.initialize_on_precompile = false
これで、ローカルでの作業は終わり。
##Herokuへデプロイ
まず、Heroku上にアプリを作成します。
heroku apps:create -a APP_NAME
次に、Herokuアプリに postgres を追加します。
heroku addons:create heroku-postgresql
作成したHerokuアプリとローカルのリポジトリを以下のコマンドで繋ぎます
heroku git:remote -a APP_NAME
そして、以下のコマンドでHerokuへデプロイします。
git add -A
git commit -m “Prepare Redmine for Heroku deployment”
git push heroku 3.4-stable:master
最後に、マイグレーションなどを行ってデプロイは終了です。
heroku run rake db:migrate
heroku run rake redmine:load_default_data
#おわりに
とりあえず、これでHeroku上にRedmineをデプロイできました。
#参考資料
How to deploy Redmine to Heroku
Heroku and Rails: Gem Load Error with Postgres, however it is Specified in GEMFILE