tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

【Heroku】Herokuをはじめるメモ with ruby for Mac - Getting Started with Ruby on Herokuを解説してみる

はじめに

Heroku使った何かをいろいろやりたくなって今さらですがHeroku導入記事。
phppythonとかでも若干違うと思いますが今回はRubyで。

今回のメモは公式のGetting Started with Ruby on Herokuに沿って行います。
https://devcenter.heroku.com/articles/getting-started-with-ruby#introduction

このメモのゴールは
自分のheroku URLで表示されるherokuページに簡単な書き換えを行って表示できる
というところまでにしたいと思います。

ながれ

以下のながれでGetting Startedを進めてみます。

  1. アカウントを作る
  2. Ruby(とRails)のインストール
  3. Bundlerインストール
  4. Toolbeltをインストール
  5. herokuアプリの作成、デプロイ、確認
  6. ログ、設定(Procfile)、プロセスを簡単に確認する
  7. ローカル環境でアプリを立ち上げて確認する
  8. ローカルのアプリを変更、デプロイ、確認してみる
  9. 補足など

はじめるまえに

はじめる前の前提知識として下記を載せておきます。細かい技術的などうこうよりは概念的なところです。
PaaSの基礎知識とHerokuで開発を始める準備

技術的にrubyやらrailsやら先に知っておいたほうがいいとかあるかもですが言い出すとキリないですしね。
遅延勉強法でも良いかなーと。
勉強が苦手な人向けの「遅延評価勉強法」

次からがオペレーションメモになりますが、Introduction(上記1〜3)が一番長く、こんな構成になってます。
Getting Startedページ

  • アカウントの作成
  • Ruby(とRails)のインストール
  • Bundlerのインストール

1. アカウントを作る

まずはにGetting Started with Ruby on Herokuページを開きます。
Getting Started with Ruby on Heroku : Introduction f:id:tweeeety:20150312220057p:plain

開く

リンクからアカウント作成画面へ行きます f:id:tweeeety:20150312220118p:plain

仮登録

各種情報を入力して仮登録を済ませます。Rubyのアイコンを選択するのを忘れずに。 f:id:tweeeety:20150312220131p:plain

OKだと仮登録完了画面に進みます f:id:tweeeety:20150312220219p:plain

と、同時にConfirm your account on Herokuみたいなタイトルでメールが届くので認証を済ませます。

本登録(activate)

メールに記載されているURLを開くとactivate画面(ログイン画面)が表示されるので
先ほど入力したアドレスとパスワードでinします。 f:id:tweeeety:20150312220152p:plain

これでアカウントの登録は終わりです。

2. Ruby(とRails)のインストール

Introduction画面にもどってrubyのインストールを行います。
今回はmacなのでチュートリアルはこのリンクから開きます。
f:id:tweeeety:20150312220241p:plain

自分はmac osの10.9.5だったのでそれ用のチュートリアルに従いました。
Setup for OS X

Ruby(とRails)のインストールで行うこと

Ruby(とRails)のインストールで行うことはこんな感じです

  • Command line toolsのインストール
  • Install Homebrewのインストール
  • rbenvのインストール
  • rubyのビルド
  • デフォルトrubyの切り替え
  • railsのインストール
Command line toolsのインストール
# xcode-select --install

command line toolsとhomebrewのインストールについては以前書いたこちらも参考に。
Mac OS XにHomebrewインストール。command line developer tools入れたり使い方メモったり(install、update、upgradeなど)

Install Homebrewのインストール
# ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

こちらもチュートリアルまんまです。同じくこちらも参考に。

rbenvのインストール
※ homebrewのアップデート
# brew update

※ rbenvとかをインストール
# brew install rbenv rbenv-gem-rehash ruby-build

※ ターミナル起動時にrbenv initコマンドを呼び出す設定を追加
# echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

※ 環境変数の設定
# echo 'export PATH="$HOME/.rbenv/shims:$PATH"' >> ~/.bash_profile

※ 設定を反映
# source ~/.bash_profile
補足

以前にbrew経由でmysqlをいじっていたせいか、brew updateでmysql関連のエラーが出たので下記な感じで直しました。
他のエラーでもこれでいける場合が多いですね。

# cd $(brew --prefix)
# git fetch origin
# git reset --hard origin/master

brew updateでerror: Your local changes to the following files would be overwritten by merge と言われる解決方法

補足

ここで直接関係ないですがrbenv-gem-rehashをインストールしてるのでrehashについての参考
rbenv rehashは何をやっているのか?

rubyのビルド
# rbenv install 2.2.0
補足

ここでも何やら言われたので下記を実行してから再度コマンド

※ 怒られる
# rbenv install 2.2.0 
uby-build: definition not found: 2.2.0
・・・省略・・・

※ おもむろにruby-build。結構ながい。。。
# brew update && brew upgrade ruby-build

※ 再度実行で成功
# rbenv install 2.2.0
デフォルトrubyの切り替え
# rbenv global 2.2.0
railsのインストール
# gem i rails --no-ri --no-rdoc

3. Bundlerインストール

またまたIntroduction画面にもどってbundlerのインストールを行います。
f:id:tweeeety:20150312220324p:plain

URLだとこれですね。http://bundler.io/

インストールしてみる
# gem install bundler

Bundlerについてはこちらを参考に
Bundlerを使ったGemパッケージの管理

4. Toolbeltをインストール

Toolbeltをインストールします。
これを入れるとHerokuをコマンドラインから操作できるようになります。
Getting Started with Ruby on Heroku : Set up

ダウンロード

ここからダウンロードします f:id:tweeeety:20150312220354p:plain

インストール

インストーラーが立ち上がるので続ける系を押す f:id:tweeeety:20150312220429p:plain

ログインしてみる

インストールが完了したら、確認もかねてコマンドからheroku loginしてみます

# heroku login
Your version of git is 1.9.3. Which has serious security vulnerabilities.
More information here: https://blog.heroku.com/archives/2014/12/23/update_your_git_clients_on_windows_and_os_x
Enter your Heroku credentials.
Email: hogehoge@gmail.com
Password (typing will be hidden): 
Authentication successful.

5. herokuアプリの作成、デプロイ、確認

herokuアプリのひな形アプリを作ってそれをデプロイしてみます。
Getting Started with Ruby on Heroku : Prepare the app

リポジトリ取得
※ heroku用にディレクトリ作って移動
# mkdir ~/heroku
# cd heroku

※ リポジトリのcloneと移動
# git clone https://github.com/heroku/ruby-getting-started.git
# cd ruby-getting-started.git
アプリの作成とデプロイ

heroku createコマンドでherokuにアプリケーションを追加、git push heroku masterでherokuにpushします。
Getting Started with Ruby on Heroku : Deploy the app

※ Herokuに新しいアプリケーションを作成
# heroku create
Your version of git is 1.9.3. Which has serious security vulnerabilities.
More information here: https://blog.heroku.com/archives/2014/12/23/update_your_git_clients_on_windows_and_os_x
Creating hoge-xxxx-yyyy... done, stack is cedar-14
https://hoge-xxxx-yyyy.herokuapp.com/ | https://git.heroku.com/enigmatic-sea-yyyy.git
Git remote heroku added

※ 作ったアプリをHerokuにプッシュします
# git push heroku master

また、heroku createコマンド実行後表示されるhoge-xxxx-yyyyがアプリ名、
https://hoge-xxxx-yyyy.herokuapp.com/がURLになってます。

heroku createコマンドは引数を指定するとhoge-xxxx-yyyyの部分は好きに設定できます。

heroku create hoge-hoge-hoge

herokuアプリにアクセスしてみる

確認する方法は2つあります。

  • 表示されたURLhttps://hoge-xxxx-yyyy.herokuapp.com/をブラウザで表示
  • heloku openコマンドを叩く(ブラウザ起動される)

以下のように表示されれば無事成功です f:id:tweeeety:20150312220522p:plain

6. ログ、設定(Procfile)、プロセスを簡単に確認する

ログ見る

ログを見る場合もherokuコマンドが使えます。
Getting Started with Ruby on Heroku : View logs

# heroku logs --tail
Your version of git is 1.9.3. Which has serious security vulnerabilities.
More information here: https://blog.heroku.com/archives/2014/12/23/update_your_git_clients_on_windows_and_os_x
2015-03-10T14:09:18.977239+00:00 heroku[api]: Enable Logplex by hogehoge@gmail.com
2015-03-10T14:09:18.977239+00:00 heroku[api]: Release v2 created by hogehoge@gmail.com
Procfile見る

ファイル自体は最初からできています。
Getting Started with Ruby on Heroku : Define a Procfile

※ もうあるので取り急ぎ確認
# ls -l Pro*
-rw-r--r--  1 hoge  hoge  40  3 10 23:06 Procfile

# vim Procfile

procfileの参考

プロセス見る

プロセスを見る際もheroku psコマンドで確認できます。
Getting Started with Ruby on Heroku : Scale the app

# heroku ps

プロセス数を変更したりもできるので以下のサイトを参考に
お財布を大事にする人のherokuプロセスコマンドまとめ
Heroku入門

7. ローカル環境でアプリを立ち上げて確認する

databaseとtableを作成

ローカル環境でアプリを立ち上げるにはデータベースが必要です。
Getting Started with Ruby on Heroku : Run the app locally

databaseとtableを作るためにまずはtutorialの通り下記のコマンドを打ってみます。

# bundle exec rake db:create db:migrate
could not connect to server: No such file or directory
  Is the server running locally and accepting
  connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
・・・省略・・・

エラーになります。。。Postgres入れた記憶も起動した記憶もないですしね。
チュートリアルuses Postgresとは書いてありますがPostgresを入れるところは書いてくれてないので自分で入れてから試してみます。

Postgres入れる

ということで気を取り直してPostgres入れてみます。

※ brew経由でpostgresqlをインストールする
# brew install postgresql

※ データベースの初期化
# initdb /usr/local/var/postgres -E utf8

※ PostgreSQLサーバの起動
# postgres -D /usr/local/var/postgres

※ データベース一覧を確認
※ psql -l
               Name               |  Owner   | Encoding |   Collate   |    Ctype    |           Access privileges           
----------------------------------+----------------+----------+-------------+-------------+---------------------------------------
 postgres                         | hogehoge | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 
 ruby-getting-started_development | hogehoge | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 
 template0                        | hogehoge | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/"hogehoge"                  +
                                  |          |          |             |             | "hogehoge"=CTc/"hogehoge"
 template1                        | hogehoge | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/"hogehoge"                  +
                                  |          |          |             |             | "hogehoge"=CTc/"hogehoge"
(4 rows)

Homebrewを使ったPostgreSQLのインストール(Mac OS Lion)

再度 databaseとtableを作成

create_tableと表示されて成功しました

# bundle exec rake db:create db:migrate
== 20140707111715 CreateWidgets: migrating ====================================
-- create_table(:widgets)
   -> 0.0088s
== 20140707111715 CreateWidgets: migrated (0.0089s) ===========================
Foremanを使ってローカルでアプリを起動する

下記のコマンドでローカルでアプリケーションを立ち上げて確認します。

# foreman start web
・・・省略・・・

フォアグラウンドで立ち上がるのでそのままブラウザでhttp://localhost:5000/と打って確認します。
成功するとこんな感じで表示されます。(先ほどと変わらない表示ですが)
heroku上で確認するかローカルで確認するかの違いですね。
f:id:tweeeety:20150312220600p:plain

終了する場合はcontrol + cで終了します。

PG::ConnectionBadと表示される場合

こんな感じで表示される場合、DB(Postgres)を起動しましょう。
f:id:tweeeety:20150312223000p:plain

※ Postgresを起動する
# postgres -D /usr/local/var/postgres

※ postgresもフォアグラウンドで立ち上げてるので
※ 違うターミナルでForemanでアプリ起動する
# foreman start web
bandle exec rake 参考
foreman 参考

8. ローカルのアプリを変更、デプロイ、確認してみる

ここまでくれば最終段階です。ローカルのアプリを変更してpush、デプロイします。

Getting Started with Ruby on Heroku : Push local changes

Hello worldページをローカル編集&確認

Gemfile編集

bundle installするためのGemfileにgem 'cowsay'を追加します。
'cowsay'はジョークgemらしいです。

# pwd
/Users/hoge/heroku/ruby-getting-started

# vim Gemfile
---- vi編集 ----
source 'https://rubygems.org'

gem 'cowsay' ←この行を追加

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.1.4'
---------------
index.erb(Hello worldページ)の編集

Hello worldページのファイルを編集します。

# pwd
/Users/hoge/heroku/ruby-getting-started

# vim app/views/welcome/index.erb
---- vi編集 ----
<!-- 一番したに追加 -->
<pre>
<%= Cowsay.say("Hello") %>
</pre>
---------------
bundle installからのforeman startでアプリ確認

これはもう打つだけですね。
もしローカルアプリを立ち上げっぱなしの場合は一旦落としてから行います。

# bundle install
# foreman start
確認

localhost:5000にアクセスして確認します。こんな感じで表示されてれば成功です。
postgresは起動しっぱなしにしましょう。
f:id:tweeeety:20150312220738p:plain

デプロイ

これはチュートリアルのまんまコマンド打ちます

# git add .

# git commit -m "Demo"

# git push heroku master

確認

heroku openコマンドでheroku上にデプロイしたアプリを確認します。
ローカルと同じようにアスキーアートが表示されれば成功です。

# heroku open

やっとゴールまでたどり着きました!

9. 補足など

bundle installでこんなエラー

エラーの内容

これはこのメモでいうところの7. ログ、設定(Procfile)、プロセスを簡単に確認する
の後にめんどくさいからbundle installってアプリ確認しちゃえーとやろうと思ったらおきました。
postgresをおとなしくインストールしておけばおきなかったエラーなので
ちゃんとtutorial通りやれってことですね。。。

# bundle install
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /Users/hoge/.rbenv/versions/2.2.0/bin/ruby -r ./siteconf20150312-26578-1hv16lo.rb extconf.rb 
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
 --with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.
対応

postgresqlをインストールすれば終わり

# brew install postgresql

参考 : gem install pg のエラー対処

まとめ

つまづいたところがあったもののherokuにというよりはrubyにですね。。。
しかしサクっと何かを試したい場合なんかは楽だなーと思いました。
いろいろ勉強ですね\(^o^)/