Ruby on Rails チュートリアルをやってみる:[第1章]開発環境設定からデプロイまで編

どーも!

 

とあることからRailsを使うことになりました。
気にはなっていたんですが触ったこと無かったのでその主を伝えた所
ネットで無料でチュートリアルがのってるからやってみてとのこと。

「目標は3日間でねっ!」って言われました。

 

まぁチュートリアルなら3日あれば余裕だろとたかをくくっていたら痛い目に遭いました。

チュートリアルを見たら書籍化されているらしくその書籍のページ数が725pって(笑)

前書きを書いている方は3日間で終わらせてしまったようで、言われた目標はここから来てるみたいですね(「3日間で読破するのは異常です!」って書いてあるんですが・・・)

今回もいつものようにメモ的な感じで書いていきます。

 

とりあえずチュートリアルはこれです。

railstutorial.jp


 

ざっくりチュートリアルの説明を見ると、

このチュートリアルにはあらゆる手順がRails流で行われているためかなり力になるそうです。

構成は
1章 必要なソフトウェアのインストールで開発環境整えてRoRを動かす準備、チュートリアルではgitを使ったバージョン管理も行う

2章 Railsアプリケーションの基本的な仕組みの体験

3章以降 1つの大きなサンプルアプリケーションを開発

最終的なサンプルアプリケーションは、(偶然にもかつてはRailsで実装されていた)某ソーシャルマイクロブログサイトにとても良く似た仕上がりになります。とのこと。青い鳥さんのやつですね。

 

 

では、本題に入って行きましょー

 

開発環境

環境設定をしていきます。ここは特に理解することも無いのでガンガンとばします。私が引っかかったエラーだけ少し記述していきます。

 
・エディタ、ブラウザなど周辺環境

エディタはSublime Textがおすすめのようです。他にもVimとかでも良いらしいですが。ターミナルはMacなら初期からインストールされているもので問題ない、ブラウザはSafariFirefoxChromeが良いそうです。

私は現行で使っているSublime TextとChoromeを使います。ターミナルも初期からのもので。
なのでこのブログでの環境は以上のものを使った説明となります。

 
RubyRubyGemsRails、 Git

順番にインストールしていきます。
ちなみにwindowsの場合はRailsインストーラなるものがあるようですね。
以下の過程をすっとばせるようです。

しかし私はMacなので1つ1つやっていきましょう。


まずはGitから。

ですが私は以前から導入済みのため割愛します。

 
次にRubyです。
しかしその前にRVMを入れろとのこと。

これを入れると複数のバージョンのRuby共存できるらしいです。

早速書かれた通りに実行、しかし問題が発生。

インストール時に警告された

* WARNING: You have '~/.profile' file, you might want to load it,
to do that add the following line to '/Users/*******/.bash_profile':

source ~/.profile

あんまり詳しく分からないがとりあえず.bash_profileにsource ~/.profileを
書いててくれないとヤバいみたいなことっぽいので書くことに。

$ ls -a

で隠しフォルダである.bash_profileを探す。
あったので最後の行に言われた通り「source ~/.profile」を一番下の行に追記。

再ロードするために

$ source ~/.bash_profile

を実行。今度は大丈夫そう。
てことで最新のRVMをインストール。終わったらRubyインストールのための要件を調べる。


全部そろってるようなのでRubyのインストールへ。これでRubyはOKそうです。
とりあえず難なく終わりましたが、ここまでの作業でも結構問題が出る作業らしい。なんかあったらググれとのこと。

gemsetなるものも必要みたいなので追加で作成。


次にRubyGemsをインストール。
Rubyインストールしていれば勝手にできているはずなので確認。
入っていればチュートリアルと同じバージョンに更新。
んでgemは2個のドキュメントを自動生成する謎機能があるので止めてもらいます。
.gemrcという設定ファイルを作成し、その主を記述。これでRuby関連は終了。


いよいよ本題のRailsのインストール。ここまで来れば簡単にできるはず。
チュートリアルと同じRails 4.0.5をインストール。バージョンを確認して終了。

環境設定はここまでですね。今回はたいした問題も無く終わりました。
人によっては最初にGitやXcodeのインストールが必要みたいですが私は導入済みだったのでそこらへんの問題も無く終わりました。


最初のアプリケーション

ここからが本題、Railsアプリケーションの作成に入っていきます。
環境設定は一気に飛ばしてやりましたが、ここからはゆっくりメモしながらやっていきます。


最初の作成手順はrails newコマンドから実行していくそうで。
これで骨組みが簡単に作成できます。
まずはRailsのバージョン確認をして4.0.5かをしっかり確認。
rails -v」
環境設定のときも確認しているので大丈夫そうです。
ではrails_projectsという名前のディレクトリを作成し、その中でアプリケーションをつくっていきます。

$ mkdir rails_projects
$ cd rails_projects/
$ rails new first_app

実行すると大量のファイルとディレクトリが作成されます。
このファイル構造が標準化されていることがRailsの利点で簡単にアプリケーションの作成ができるとのこと。
チュートリアルでは簡単にこの構造について説明が書かれています。正直、今理解しようとしても難しいので軽く流し見して次に進みます。


次はBundlerを実行して、アプリケーションに必要なgemをインストールおよびインクルードします。
でも先ほどのようにBundlerは自動的に実行されます。
ここでは勉強のために少しgemを変更して再度Bundlerを実行するようです。
生成されたディレクトリに入り、直下のGemfileをエディタで開きます。

$ cd first_app/
$ subl Gemfile

私の場合、開いたらこのようになっていました。
f:id:marinok:20150615230136p:plain
ここで#で書かれているのはコメント文であり、文法の例のようです。
なので基本は自分で記述するのではなく#を外して追記、変更するするようです。

Bundlerは自動的に最新バージョンのgemを取得してインストールしてくれます。
gemを更新すると小さな問題を起こすことがよくあるようなのでチュートリアルでは動作確認済みのバージョン番号を指定していくようです。
以下のように、Gemfileを変更。まぁ軽く目を通してコピペで良いでしょう。
f:id:marinok:20150615230249p:plain
チュートリアルでここについての細かい変更点と構文についていろいろ説明されているので、読んで理解しながら進みましょう。


内容を理解したら、改めてgemをインストールしていきます。

$ bundle update
$ bundle install

以上、rails newコマンドとbundle installコマンドを実行することで、早速実際に動かせるアプリケーションが作成されました。
RailsにはローカルWebサーバを起動するコマンドも用意されているようなので実行してみます。

>||$ rails server」|

以下のように表示されるはずです。

=> Booting WEBrick
=> Rails 4.0.5 application starting in development on http://0.0.0.0:3000

=> Run `rails server -h` for more startup options

=> Ctrl-C to shutdown server

これはIPアドレス0.0.0.0、ポート番号3000で動作していることを示しているので、実際にブラウザからhttp://localhost:3000/にアクセスしてみます。
f:id:marinok:20150615230650p:plain
「About your application’s environment」のリンクをクリックすると最初のアプリケーション情報が見れます。見なくても良いです(笑)


チュートリアルではこの後にMVC (model-view-controller)の説明がなされていますので簡単に理解しておいた方が良いと思います。
少し前にやったCakePHPも同じ仕組みでしたね。


少し話はとんでGitの話に入っていきます。
アプリケーションの実際の動作には関わりはないですが、開発者なら必要不可欠な項目です。
Gitをインストールしたら最初にコンピュータ1台につき1回行う、システムセットアップを行います。
名前とメールアドレスの設定です。(ちなみに先ほどのサーバを停止していない場合はctrl+cで停止して下さい。commandではなくctrlです)

$ git config --global user.name "あなたの名前"
$ git config --global user.email *****@****

そしたら、コミットメッセージ(保存するときのメモ書き的な)を入力するエディタも設定しておきます。

$ git config --global core.editor "subl -w"

今度は、リポジトリを作成する作業として、Railsアプリケーションのルートディレクトリ(今回はfirst_app)に移動し初期化を実行。

$ git init

次に、プロジェクトのファイルをリポジトリに追加するのですが、Gitは全ての変更履歴を管理するので
いちいち更新させたくないログファイルなどを除外します。
.gitignoreというファイルをルートディレクトリにおき、ルールを記述します。
.gitignoreファイルはすでにrailsによって作成されているので変更していきます。

$ subl .gitignore

f:id:marinok:20150615230957p:plain

最初のうちはこのままの設定でも良いようですが、さらに便利でセキュリティ上でも有利なように以下のように変更します。

f:id:marinok:20150615231015p:plain

最後にGitに追加しコミットしていきます。

$ git add .

「.」は現在のディレクトリを指します。
これでプロジェクトのファイルは、コミット待ちの状態になっています。
この待ち状態のファイルのリストを表示するにはstatusコマンドを実行します。

$ git status

first_appの各ファイルが表示されていれば大丈夫です。
変更を保存するには、commitコマンドを使います。

$ git commit -m “Initialize repository”

先ほどの各ファイルが
create mode 100644 ~
と表示されていれば完了です。

今回-mフラグでコミットメッセージ(メモ書き的なもの)を追加しています。日付とか変更点のメモなど書くのが普通です。
これは絶対に必要のため(確か)、省略した場合は先ほど設定したエディタが開かれ入力を求められます。
ちなみにコミットはローカル上の保存であって、リモート上へ反映させるにはプッシュという別の操作が必要です。
また、logコマンドでコミットメッセージの履歴を参照できます。

$ git log


今の時点では、結局Gitってなに?状態だと思いますが、メリットとして一つ例を挙げるならば、
間違って重要なディレクトリを削除(rm)してしまった!ってときにいつでもコミットした状態に戻す(checkout)ことができるいわゆるバックアップ的なものです。
これだけでは別にそんなんでもなくね?ってなると思いますがこれだけじゃなく、ブランチなどチーム開発とかで便利な機能があります。詳しい説明はチュートリアルGitHubの説明で触れています。

Gitを使用してプロジェクトをバージョン管理下におくことができたので、今度はGitHubにコードをアップロードします。
GitHubはGitのWebサービスです。Web上にアップすることで、完全なバックアップの作成、開発の共同作業をより簡単に行うことができます。


GitHubの説明は長くなってしまうため今回ブログでは割愛します。いつか記事にしたいとは思っています。
チュートリアルではさらっと一通り触れていますが初見では理解するのは難しいと思います。大まかに理解できるよう眺めてみるのが良いと思います。


デプロイ

以上で空っぽのRailsアプリケーションの作成と保存(Git)が終わりました。
次に、空っぽではありますがデプロイしていきます。
デプロイメントサービスは色々あるようですがこの章では、Herokuにデプロイするようです。ちなみにGitを導入してないとできません。
HerokuではPostgreSQLデータベースを使用するため、環境にpg gemをインストールしてRailsPostgreSQLと通信できるようにします。
Gemfileにその主を追記します。

f:id:marinok:20150615231321p:plain

追記したらインストール。
追記したgemは本番環境でのみ使用するものなので、ローカル環境にはインストールしません。
そのためにコマンドに--without productionというオプションを追加します。

$ bundle install --without production

(Bundlerでreadlineエラーが発生した場合は、Gemfileにgem ’rb-readline’を追加してくださいとのこと。)


変更をコミットします

$ git commit -a -m "Update Gemfile.lock for Heroku”

ではHerokuを使っていきます。アカウントの作成が必要なので公式サイト(https://signup.heroku.com/identity)で作成し、完了通知メールからパスワード設定を行います。
さらに必要なソフトウェアをHeroku Toolbelt(https://toolbelt.heroku.com/)からインストールします。
以上終わったら以下のコマンドを実行(ターミナルの再起動の必要あり)

$ heroku login

アドレス、パスワードを入力すれば完了です。


最後に、元のRailsプロジェクトディレクトリ(first_app)に移動し、erokuサーバー上にサンプルアプリケーション用の場所を作成します。

$ heroku create

このコマンドによりRailsアプリケーション専用のサブドメインが作成され、ブラウザ表示可能になります。
ではデプロイしていきましょう。まず、Gitを使用してHerokuにリポジトリをプッシュします。

$ git push heroku master

これで終わりです。heroku createを実行した際に生成されたアドレスをブラウザで開くだけです。
今回は技術的な理由によりエラーページが表示されます。

f:id:marinok:20150615233414p:plain

以上で第1章は完了です。長かったですがこれでもまだ1章です。。。
後はRailsを実際に勉強するだけです。が、残り10章あります。

しんどっ泣