TracksをHerokuで試す
Tracksとは?
TracksはRuby on Railsで書かれた、 シンプルなTodoリストアプリ。
ちょっと試してみたかったので、公式のインストールガイドを参考にして実践した。
non-programmer向けと書いてあるけど、コマンドラインからHerokuにデプロイとかしている時点で
プログラマー向けなんじゃないのか?
コード書いていないインフラ系の人でも出来ますよ、というニュアンスなのかな?
それとも今のご時世、"Herokuなんて、アンタそりゃーiPhone使えりゃ誰でも使えまっせ"というレベルなのだろうか?
つまらないこと言っていないで、公式の情報を参考に試していく。
TracksをHerokuにインストールする
Githubからcloneする
git clone https://github.com/TracksApp/tracks.git
rootに移動してから作業していく
cd tracks
production.rb内のキャッシュの設定を変更する(エディターはお好きなものを)
vim config/environments/production.rb
# 変更箇所はgit diffで取ったdiffを貼り付けていく
- config.action_controller.perform_caching = true
+ config.action_controller.perform_caching = false
site.ymlをコピーする
cp -p config/site.yml.tmpl config/site.yml
vim config/site.yml
設定する項目は4箇所
secret_token => ランダムな文字列
(tracksのディレクトリで"rake secreat"を実行すれば自動で更新できるとのこと=>これは未検証)メールアドレス => 任意のアドレスを設定
open signup = >falseのまま
(誰でもusernameでサインアップ可能にするには"true"にする。spamに注意!)メールプロバイダの設定=>設定していない
Gemfileを更新
vim Gemfile
Gemfileの変更箇所をgit diffにて表示
使用するRubyバージョンを記述
source 'https://rubygems.org'
+ruby '2.3.0'
DBはpostgres使用するので、sqlite3とmysql2は削除して、pgを記述
-gem "sqlite3", group: :sqlite
-gem "mysql2", "~> 0.3.17", group: :mysql
+gem "pg"
rails_12factoryを追記
+gem 'rails_12factor'
Gemfileの編集箇所はここまで
Procfileを新規作成して、
vim Procfile
下記の一行を記述
web: bundle exec rails server thin -p $PORT -e $RACK_ENV
bundle install実施。
自身の環境を汚したくなかったので、下記のようにして"bundle install"
bundle install --path vendor/bundle
libv8関連でエラーが吐かれたので、下記を実行。
(Mac OSX環境だと発生するエラーらしい。)
エラー解決のために参照した記事は下記に貼っておく。
bundle update libv8
.gitignoreを開き、"config/site.yml"をコメントアウト。
vim .gitignore
-config/site.yml
+# config/site.yml
gitリポジトリに追加してコミットする。追加するのは"site.yml"と"Gemfile.lock"
git add config/site.yml Gemfile.lock
git commit -a -m "Updated/add the site information and bundle additions for Heroku"
Herokuにてアプリ作成({NAME}に任意の名前を入力)
heroku create {NAME} --stack cedar-14
production環境のみで
heroku config:add BUNDLE_WITHOUT="development:test:selenium"
herokuにpushする
git push heroku master
Heroku上でDBをmigrateする
heroku run rake db:migrate
Heroku上で構築したアプリを開く
heroku open
すると、下記のような無骨な画面が現れるので、管理者Userを作ればOK!