Railsシリーズ始めて見たいと思います。初回は初心者向けにRailsアプリの新規作成とheorkuへのデプロイを紹介したいと思います。Rubyのインストールについてはこちらの記事で紹介しています。
heroku
heroku(ヘロク)とはPaaSというジャンルのサービスで、Rails等で作ったWebアプリケーションをサーバの設定などを行わずにすぐに公開できるサービスです。
基本的には無料で使えて、本番環境として使う場合は有料プランが推奨されています。
phpならレンタルサーバーを借りて作ったファイルをFTPすれば動かせますが、rubyとなるとVPS等でサーバーの設定をして…とかちょっと面倒ですよね。herokuを使うと、gitリポジトリにpushするだけでWebアプリを公開できるのでとっても楽ちんだし、タダで使えるしいい感じです。
herokuを使うためにはまずアカウントを取得して、heroku toolbeltををインストールします。
サインアップ
https://id.heroku.com/signup
ツールベルト
https://toolbelt.heroku.com/
Rails 4 アプリを作る
今回は特に何もしないアプリケーションを作ります。
まずターミナルを開いてアプリを作るディレクトリに移動して、アプリを格納するディレクトリを作成します。
ここで注意してください。作成するディレクトリ名はRailsアプリのネームスペースになりますので後で後悔しないような名前に!
$ cd path/to/workspace $ mkdir kozo-sample-rails4
ディレクトリを作成したらそこに移動して、Gemfileを作成します。
Gemfileはbundlerというgemを使うために必要なファイルですが、bundlerがインストールされていない場合は先に入れておきます。
$ gem list | grep bundler bundler (1.3.5)
↑このような表示になればインストールされていますが、インストールされていない場合は以下を実行してください。
$ gem install bundler --no-ri --no-rdoc
bundlerを使ってGemfileを作成するには以下を実行します。
$ bundle init
Gemfileが作成できたらエディタで開き、gem “rails” の部分のコメントを外します。
# A sample Gemfile source "https://rubygems.org" - # gem "rails" + gem "rails"
Gemfileを保存して閉じたらrailsを現在のディレクトリ以下にインストールします。
具体的には path/to/workspace/kozo-sample-rails4/vendor/bundle 以下にインストールされます。
$ bundle install --path vendor/bundle --without production
–without オプションをつけておくと、heorku環境のみに必要なgemはローカル環境でインストールされるのを防ぐことが出来ます
bundle installが終わったら以下のコマンドを実行してRailsアプリのひな形を作成します。
$ bundle exec rails new . --skip-bundle
1つずつ説明していくと、bundle execまでが先ほどbundle installでインストールしたgemを使うことを示しています。
rails new . は現在のディレクトリに新しいrailsアプリのひな形を作成します。–skip-bundleはひな形作成後に自動でbundle installが行われるのを防いでいます。
途中でGemfileを上書きする確認(Overwrite /Users/kozo/tmp/kozo-sample-rails4/Gemfile? (enter “h” for help) [Ynaqdh])がありますが上書きして良いのでそのままエンターキーを押してください。
ひな形が出来たらまたGemfileを開いて、以下の記述を追加します。追加する場所はどこでもOKです。
group :production do gem 'rails_12factor' gem 'pg' gem 'unicorn' end
sqlite3がheroku環境にインストールできないようなのでsqlite3の行を以下のように変更します。
gem 'sqlite3', group: [:development, :test]
追加したらbundle installを実行します。(Gemfileを編集したら必ずbundle installを実行しないと意味がないのでセットで行うと覚えておきましょう)
次にProcfileというファイルをGemfile等と同じ場所に作成していかの内容を入れておきます。
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
さらに configフォルダの中にunicorn.rbというファイルを作成して以下の内容を入れておきます。
worker_processes Integer(ENV["WEB_CONCURRENCY"] || 3) timeout 15 preload_app true before_fork do |server, worker| Signal.trap 'TERM' do puts 'Unicorn master intercepting TERM and sending myself QUIT instead' Process.kill 'QUIT', Process.pid end defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect! end after_fork do |server, worker| Signal.trap 'TERM' do puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT' end defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection end
これでherokuに公開するgem等は用意出来たのですが、肝心のトップページがありませんので各箇所に以下の記述を追加します。
config/routes.rb (長いコメントは削除してしまいましょう)
KozoSampleRails4::Application.routes.draw do root to: 'pages#home' end
app/controllers/pages_controller.rb (デフォルトでは用意されていないので作成してください)
class PagesController < ApplicationController end
app/views/pages/home.html.erb (こちらもデフォルトは用意さていないので作成してください)
<%= Time.now %>
トップページを表示する準備ができたのでサーバーを起動して確認してみます。
$ bundle exec rails s
http://localhost:3000にアクセスして現在時刻が表示されたら成功です。
ここまできたら後はデプロイするだけ!あと一息です。
herokuのデプロイにはgitが必要なのでアプリのディレクトリでgitリポジトリを作成し、最初のコミットを実行します。
$ git init $ git add . $ git commit -m "Initial commit"
次にherokuのアプリを登録します。(heorkuコマンドを最初に実行するときはログインが必要です)
$ heroku create kozo-sample-rails4
kozo-sample-rails4の部分はアプリ名ですので作ったアプリの名前に合わせる等してください。kozo-sample-rails4はもう使えませんよ!
herokuにアプリの登録ができたらgit pushを実行します。
$ git push heroku master
ズラズラっとherokuのデプロイログが出力されますので無事終わったら以下のコマンドでブラウザを開きます。
$ heroku open
2014-03-02 08:13:26 +0000 と表示されました!ブラウザをリロードすると時間が進むはずです。
Pingback: Herokuを使うときに参考にしたまとめ | 不格好エンジニア