いまさら聞けないRuby on Railsとherokuでつくるシンプルなタスク管理ツール #2
前回の記事でシンプルなタスク管理ツールは作成できましたでしょうか。今回はそれをherokuで動かせるようにしてみます。
はじめに
herokuはRuby、Java、Clojure、Java、Python、Node.js、Scalaなどの複数言語に対応したPaaSです。gitとheroku toolbeltを利用してローカルから幾つかコマンドを打つだけでアプリケーションをデプロイできます。ベーシックなプランは無料で利用できますし、無料のアドオンが多数用意されていますのでサーバ管理を気にしなくとも柔軟な開発が出来ます。
利用にはherokuのアカウント作成とheroku toolbeltをインストールする必要があります。
heroku上でアプリを作成する
heroku toolbeltをインストール出来たらrailsアプリのディレクトリへ移動して以下のコマンドを実行してください。
$ heroku create my-simple-todos Creating my-simple-todos... done, stack is cedar http://my-simple-todos.herokuapp.com/ | git@heroku.com:my-simple-todos.git Git remote heroku added
作成できました。既にgitリポジトリが存在していたので自動で heroku というリモートリポジトリも追加されています。
もしgit initをする前にheroku createをしてしまっても git@heroku:[app name].git でリポジトリに追加すれば大丈夫です。例えば以下のように。
$ git remote add heroku git@heroku:my-simple-todos.git
herokuにデプロイする
デプロイは基本herokuのリポジトリにpushするだけです。そうするとリモートでおそらくpost-receiveフックが設定されていてアプリのコードの更新等をしてくれます。
今回の場合はherokuという名前でリモートが設定されているので以下のようにします
$ git push heroku master
きっとrailsアプリであることを認識してbundle install、rake assets:precompile、サーバーの起動などを実行してくれると思います。
しかしまだDBのmigrationは実行されていないのでテーブルを追加or更新した場合は以下を実行してください。
$ heroku run rake db:migrate
heroku上のアプリに対してrakeタスクを実行するときはheroku runコマンドを使用します。
これでアプリの実行環境が整いました。ブラウザでURLを直打ちしてもいいですが便利なコマンドも用意されています。
$ heroku open
トップページを変更する
おそらくデフォルトのWelcome aboardが表示されたと思います。/tasksに移動して動作を確認してみてください。きちんと動作したでしょうか。
トップページを開いてもいちいち/tasksに移動しなくてはいけないのは面倒ですよね。なので以下のように修正しておきます。
config/routes.rb
MySimpleTodos::Application.routes.draw do root :to => 'tasks#index' resources :tasks do resource :finish, only: [:create, :destroy], module: :tasks end
routes.rbにこの様に記述を追加するとルートパスに TasksController の index アクションを紐付けることができます。
しかしこのままでは public/index.html(Welcome aboard) が優先されてしまうので削除しておいてください。
修正が終わったらgit commitして再度herokuにpushしてください。
今度はmigrationを実行する必要はありません。ブラウザでトップページを開くと/tasksと同じ内容が見られると思います。
herokuのログを見る
ページにアクセスしてもエラーメッセージしか返ってこない場合はherokuのログを確認してみてください。
$ heroku logs
デフォルトでは直近の100行が返ってきます。もっと遡りたい場合は --num オプション(省略形は-n)で行数を指定できます。
$ heroku logs --num 500
メンテナンス状態にする
DBのテーブル追加等でデプロイが終わるまでメンテ状態にしておきたいなんてことも簡単にできちゃいます。
$ heroku maintenance:on Enabling maintenance mode for my-simple-todos... done
戻すのはこちら
$ heroku maintenance:off Disabling maintenance mode for my-simple-todos... done
メンテナンス画面はAmazon S3に静的なhtmlを置けばカスタマイズできるようになります。htmlのURLはwebの管理画面か以下のコマンドでも設定できます。
$ heroku config:add MAINTENANCE_PAGE_URL=http://s3.amazonaws.com/bucket-name/maintenance.html
まとめ
他にもherokuコマンドで設定できるものはたくさんありますが今回は割愛させて頂きます。
herokuをproduction環境で使おうとしてそれなりのスペックにすると個人では結構負担がありますが、無料で手早くrailsアプリをデプロイ出来るのはかなり魅力が大きいと思います。是非試してみてください。