おれろぐ #z_a_ki3

(・∀・) オイ!

ひさしぶりのpaiza

paiza is コーディング転職のパイザなんですが、主に転職目的ではなく、
コーディング力の力試しとして活用させてもらっています。(中の人すみません。)

今日はランクB問題をやってみました。

問題自体はこのサイトの公平性を保つため、こちらに記載することはできませんが、
三次元と多次元配列をマッピングするのに少し頭がこんがらがりました。

なんとか90点(実装時間で減点)取ることができたので安心しました。

こんな多次元配列とか・・・

int[][][] cube = new int[x][y][z];

こんな感じにfor文がネストさせてしまう実装力で辛い。

for(int lx=0;lx<x;lx++) {
    for(int ly=0;ly<y;ly++) {
        for(int lz=0;lz<z;lz++) {

【復習】Ruby on Rails入門 ~ミニブログを作りながら学ぶWebアプリケーション制作 第1回~

無料動画のオンライン学習サイトのスクーで鳥井 雪(@yotii23)先生の授業を見て
RubyRailsに興味をもち、色々と触ってみています。

何かしらアウトプットした方が覚えが良いので、復習した内容をまとめたいと思います。

このサイト、生放送の授業にリアルタイムチャット機能がついていて、コメントを先生や学生代表の方に
拾ってもらえたり、生徒同士で課題解決したりと双方向のコミュニケーションが出来て結構楽しめるので、
気になった方は是非、参加してみてください。

今回はRuby on Rails入門 ~ミニブログを作りながら学ぶWebアプリケーション制作 第1回~の授業になります。

ちなみに環境は先日作成したRuby on Rails の開発環境つくってみた - おれろぐ #z_a_ki3
作成した環境を使って進めていきます。

※Gemをなるべくシステムにインストールしないようにしているので授業と微妙に違う点はご容赦ください。

ゴール

  • Webアプリケーションの基本のイメージを持つ
  • Railsのアプリケーションを動かしながら、「データの登録」を理解する

動作環境チェック

RubyRailsがインストールされている環境が前提です。
バージョンの確認コマンドは以下のコマンドです。

$ ruby -v
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]
$ rails -v
Rails 4.2.0

Rubyは1.9以上、Railsは特に明言されていませんでしたが、先生の環境は4.2.0でした。

ちなみに授業ではnitrous.ioを使用しています。

環境構築から編集まで全てブラウザ上で完結するので非常に便利なんですが、動作が重く進まないことも
あったり不安定な部分が目立つので環境が作れるならローカルで用意した方が良いと思います。

授業中も環境構築(プロビジョニング)にだいぶ時間がかかってました _(┐「ε:)_ズコー

プロビジョニングとは,ネットワークやコンピュータの設備を, 必要になったときすぐに利用できるよう準備しておくことを指す キーワードである。供給や支給,配置といった意味を表す 「provision」という英単語が元となって派生した言葉である。

Networkキーワード - プロビジョニング:ITpro http://itpro.nikkeibp.co.jp/article/Keyword/20080610/307257/

課金すれば多少は改善されるかもしれませんが、仮想環境は無償で作れる&勉強になるのでオススメです。
あとは、似たようなサービスでCloud9がありますが、こちらも同じ事が言えます。

1.Webの基本のしくみ

Rails固有の内容では無く、Webのリクエストとかレスポンスとか基本的な内容の再確認です。

・リクエスト
ブラウザでWebのページを見るときにリンクを踏んだり、ボタンを押したりして画面を出す際、
PCからインターネットを通じてサーバにリクエストが飛ぶ。 登録フォームなども同様にリクエストを送っている。

・レスポンス
サーバは色々な処理をしてレスポンスを返す。
レスポンスは例えばHTMLのテキストや画像、動画を返す。 ブラウザはそれを組み立てて画面として構成する。

この辺の知識はRails関係なく、PHPでもJavaでもどんな言語でも共通で必要な知識です。
基礎をしっかり学習したい方は下記の書籍がオススメです。

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESS plus)

スクーのプレミアム学生ならこんな録画授業で学習できます。

2.アプリケーションの雛形をつくってみよう!

アンケート

Ruby」と「Rails」の違いわかりますか?

Rubyは"プログラミング言語"
RailsRubyでWebアプリケーションを作るための"Webアプリケーションフレームワーク"

で、"Webアプリケーションフレームワーク"とはWebアプリケーションを作るために
必要な共通の機能(部品、土台)を用意してくれているもの。

Railsのマークは"白いイカの足"ではなく、"レール(線路)"で、Railsの敷いたレールに乗ると
理解しやすい形で開発できることが思想にある。

確かに白いボツボツが吸盤にみえなくも無い。。。

雛形を作ってみよう!

rails new コマンドで雛形を作成します。

$ rails new my_app

このコマンドを入力するとカレントディレクトリにmy_appというフォルダを作成し、その中に、
必要な雛形ファイルを自動生成、ライブラリをダウンロードしてくれます。

至れり尽くせりでありがたいですね。

ちなみに私はシステムに余計なGemを入れたくなかったので、まず、bundle initで初期化して、
生成されたGemfilerailsのみ指定して、アプリ用に専用のrailsをインストールして、
そのアプリ用のrailsを使って雛形を作るという事をしました。

$ mkdir my_app
$ cd my_app/
$ bundle init
Writing new Gemfile to /vagrant/schoo_rails/my_app/Gemfile
$ vi Gemfile  #Gemfileを編集
# A sample Gemfile
source "https://rubygems.org"

gem "rails", '4.2.0'
$ bundle install --path ./vendor/bundle
Fetching gem metadata from https://rubygems.org/...........
Fetching version metadata from https://rubygems.org/..
Resolving dependencies...
Using rake 10.4.2
Installing i18n 0.7.0
Installing json 1.8.2
Installing minitest 5.5.1
~略~
Installing rails 4.2.0
Bundle complete! 1 Gemfile dependency, 36 gems now installed.
Bundled gems are installed into ./vendor/bundle.
$ bundle exec rails new ./
       exist
      create  README.rdoc
      create  Rakefile
      create  config.ru
      create  .gitignore
    conflict  Gemfile
Overwrite /vagrant/schoo_rails/my_app/Gemfile? (enter "h" for help) [Ynaqdh] Y
       force  Gemfile
      create  app
      create  app/assets/javascripts/application.js
      create  app/assets/stylesheets/application.css
      create  app/controllers/application_controller.rb
      ~略~
Bundle complete! 12 Gemfile dependencies, 57 gems now installed.
Bundled gems are installed into ./vendor/bundle.
         run  bundle exec spring binstub --all
* bin/rake: spring inserted
* bin/rails: spring inserted
$

bundle exec はシステムにインストールされたGemではなく、bundle installでインストールした Gemを使って指定のコマンドを実行するコマンドです。

動作を確認しよう

rails serverでWebアプリケーションサーバを立ち上げます。

$ cd my_app #カレントディレクトを rails new で作成したディレクトリに移動
$ rails server

ちなみにセキュリティーが強化され、rails4.2.0からはバインドを指定しないとサーバを起動した端末以外では
ページを表示することが出来ないので仮想環境などで実行する際は-b(--binding=)オプションを付けましょう。

$ rails server -b0.0.0.0
$ rails server --binding=0.0.0.0

停止するときはctrl+Cです。

投稿機能を作ってみよう

まずは作りたいものを考えます。(今回は"投稿機能")
アプリケーションを作り始めるときにしっかりと仕様を決めるのは大事ですね。

  • 「名前」と「短い本文」が投稿できる
  • 投稿したものが下のように一覧で表示できる。
名前 本文
やきとりい おはようございます
笹田 ねむい
やきとりい 電車乗り過ごした・・・むしろ降りれなかった。
yotii23 人生万事塞翁が馬

作りたいものが決まったらモデルを(ほんとに簡単ですが)設計します。
ここでいうモデルとはデータベースのテーブルのようなイメージですかね。

投稿というモデルはentryという名前とします。
名前(投稿者名)はnameという名前で短い文字列、本文はbodyという名前で長いテキストとします。
短い文字列の形式はstring、長いテキストはtextという形式です。

仕様がきまったらモデルを生成します。

$ rails generate scaffold entry name:string body:text

ちなみに間違えた場合はgeneratedestroyにすると削除できます。

$ rails destroy scaffold entry

このscaffoldとは足場という意味があり、モデルに必要な様々な機能の部品を自動生成します。

この足場というのは、一度scaffoldで全ての部品を作成し、不要な部品(足場)を外していく様から
付けられたんじゃ無いかなと勝手に想像しています。勝手な想像なので出典はありません。

モデルに必要な部品が揃ったらデータベースを作成します。

$ rake db:migrate

このコマンドを実行することで作成したモデルに合うようにデータベースを更新します。
今回はモデルを新規追加したので、データベースには新規テーブルが追加されます。

タイムラインの質問で entryentries になる?というのが取り上げられていましたが、 railsではモデル名とテーブル名が規約で定められています。

モデル(model) - Railsドキュメント

種類 説明
モデルクラス名 先頭は大文字で単数形 User
モデルのファイル名 先頭は小文字で単数形 user.rb
テーブル名 先頭は小文字で複数 users
テストスクリプト xxx_test.rb user_test.rb

ここで http://localhost:3000/entries にアクセスするのですが、環境によっては以下のエラーがでます。

ExecJS::RuntimeUnavailable in Entries#index
Showing /vagrant/schoo_rails/my_app/app/views/layouts/application.html.erb where line #6 raised:

Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.
  (in /vagrant/schoo_rails/my_app/vendor/bundle/ruby/2.2.0/gems/turbolinks-2.5.3/lib/assets/javascripts/turbolinks.js.coffee)

根本原因は理解しきれていないのですが、JavaScriptの実行エンジンが関係している用です。
Ruby - Could not find a JavaScript runtime - Qiita

# See https://github.com/sstephenson/execjs#readme for more supported runtimes
gem 'therubyracer', platforms: :ruby  #コメントを外す

できた機能たち

機能 Webページ上の表示
一覧 Listing Entries
新規作成 New Entry
詳細 Show
編集 Edit
削除 Destroy

覚えて欲しいキーワード「CRUD

CRUD(クラッド)とは、ほとんど全てのコンピュータソフトウェアが持つ永続性の4つの基本機能の イニシャルを並べた用語。 その4つとは、Create(生成)、Read(読み取り)、Update(更新)、Delete(削除)である。 ユーザインタフェースが備えるべき機能(情報の参照/検索/更新)を指す用語としても使われる。 CRUD - ウィキペディア ja.wikipedia.org/wiki/CRUD

機能 Webページ上の表示
C:Create(作成) New Entry
R:Read(読み取り) Listing Entries、Show
U:Update(更新) Edit
D:Delete(削除) Destroy

鳥井先生の資料がDeleteでは無く、Destroyだったんですが、Railsのコントローラファイルを見てみると、
Deleteメソッドに対応する呼び出しメソッドがdestroyなんですよね。
この辺が資料に入っちゃったのかなと想像しました。

  # DELETE /entries/1
  # DELETE /entries/1.json
  def destroy

「データを登録する」ということ

アンケート

データベース(DB)って聞いたことありますか?

Webのやりとり(リクエスト>レスポンス)は毎回1回ずつのやりとりになります。
その中で長く取っておきたい情報はDBに保存します。

WebアプリケーションにはDBそのものの機能はなく、DBとやりとりする機能を持っています。

では、データベースはいつしたのかというと・・・

$ rails generate scaffold entry name:string body:text

これで /db/migrate 配下に設定ファイルが生成されて、

class CreateEntries < ActiveRecord::Migration
  def change
    create_table :entries do |t|
      t.string :name
      t.text :body

      t.timestamps null: false
    end
  end
end

設定ファイルが生成された後・・・

$ rake db:migrate

これで生成された設定ファイルをもとにDB内にテーブルが作成されます。

rake db:migrate - リファレンス - Railsドキュメント

Webアプリケーションは機能(CRUD)に応じてDBに対し、レコードの挿入、更新、削除をよしなに実行します。
これがWebアプリケーションの基本機能となります。

次回以降の内容

  • Railsが作ってくれた今の機能に、自分のやりたいことを足してゆく
  • 見た目をかっこよくする
  • 情報を付け加える
  • Railsの構造を理解する

宿題

  • ブラウザとサーバー(アプリケーション)の図を自分でも書いてみましょう
  • 普段インターネットを使うとき、どんなタイミングでリクエストが飛んで、どんなデータが
    保存されているのかを想像してみましょう。

感想

Railsのアイコンはイカの足ではない。
nitrous.io は時間帯によっては結構重い、辛い。
お水ー!

Ruby on Rails の開発環境つくってみた

普段、Javaでジャバジャバしてる私がRuby on Railsの環境構築した時の備忘録であり、
SIer様が言うところの新規参画者向けの"環境構築手順書"的な位置づけです。

ベストプラクティスではないと思いますが、構築に際して下記要件を意識しています。

  • 開発環境と本番環境の差違を減らして余計なトラブルを避けたい。
  • MacでもWindowsでも同じ環境を作れるようにしたい。
  • 開発は補完・デバッグまで出来るようにしたい。

裏付けはありませんが、WindowsRubyの相性が良く無さそうな事とMac環境に
依存することも避けたい、本番環境は大抵LinuxなのでVirtualBox+Vagrant
仮想Linux環境を作ることにしました。

仮想環境を作成する為、PCのメモリは4GB以上は欲しいです。

コーディングに関してテキストエディタ派とIDE派で分かれているようですが、
普段JavaIDEを使うことに馴れてしまっている事もあるので、IDEを選択しました。

Rubu on Railsに対応したIDEですが、メジャーどころでNetBeansとRubyMineがあり、
NetBeansは無償かつJavaEE系の開発にも最適化されているので使いたいところですが、
残念ながら公式でサポート終了*していることもあるので今回はRubyMineを使ってみます。

*Ruby, Ruby on Rails Support Discontinued in NetBeans IDE


[2015/3/1追記]
RubyMineを導入したかったのですが、知識不足での環境構築が良い感じに出来なかった為、
しばらくはテキストエディタを使っていきたいと思います。

補完・デバッグはエディタのプラグインデバッグ用Gemでどうにか出来ればと思います。


※開発環境の為、セキュリティ対策は皆無ですので、注意してくださいね。

1.VirtulBoxのインストール

以下のサイトから最新版のプログラムをダウンロードし、インストールします。 https://www.virtualbox.org/

2.Vagrantのインストール

以下のサイトから最新版のプログラムをダウンロードし、インストールします。 https://www.vagrantup.com/

インストールが完了したらターミナルからバージョンを確認します。

$ vagrant --version
Vagrant 1.7.2

3.仮想環境を作成する。

Vagrantでは仮想イメージをBoxと呼ばれるパッケージで管理します。

仮想マシンを作成、OSを0からインストールしても良いのですが、ここではさっさと開発環境を
作成してしまいたいので、公開されているBoxファイルを使用します。

今回はサーバ構成自動化ツールのChefが公開しているBoxを使いたいと思います。 https://vagrantcloud.com/chef

CentOS6.6のBoxは chef/centos-6.6 になります。

まず、Box名を指定して初期設定をします。

$ vagrant init chef/centos-6.6

カレントディレクトリに Vagrantfile が作成されるのでこれを修正します。

# 以下の行のコメントを外す(ブリッジ接続になります。)
# config.vm.network "public_network"

# 以下の行のコメントを外す(メモリ割り当てが1024MBになります。)
# config.vm.provider "virtualbox" do |vb|
#   # Customize the amount of memory on the VM:
#   vb.memory = "1024"
# end

今回はブリッジ接続にしましたが、ホストオンリーアダプタにする場合は、
以下の行のコメントを外します。

  # config.vm.network "private_network", ip: "192.168.33.10"

編集が終わったら仮想マシンを構築、起動します。

$ vagrant up

初回起動時にブリッジするインタフェースを選択するよう聞かれるので指定します。

==> default: Available bridged network interfaces:
1) en0: Wi-Fi (AirPort)
2) en1: Thunderbolt 1
3) en2: Thunderbolt 2
4) p2p0
5) awdl0
6) bridge0
==> default: When choosing an interface, it is usually the one that is
==> default: being used to connect to the internet.
    default: Which interface should the network bridge to? 1

起動したら試しにターミナルからsshで接続してみます。

$ vagrant ssh

実行すると仮想環境にログインできます。

$ vagrant ssh
Last login: Tue Feb 24 19:29:31 2015 from 10.0.2.2
[vagrant@localhost ~]$

念の為、OSのバージョンを確認してみます。

[vagrant@localhost ~]$ cat /etc/redhat-release
CentOS release 6.6 (Final)

続いてネットワークの構成を確認します。

[vagrant@localhost ~]$ ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:6B:1C:DD
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe6b:1cdd/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:379 errors:0 dropped:0 overruns:0 frame:0
          TX packets:241 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:42250 (41.2 KiB)  TX bytes:33387 (32.6 KiB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:56:51:14
          inet addr:192.168.1.103  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: 2408:212:5e0:1200:a00:27ff:fe56:5114/64 Scope:Global
          inet6 addr: fe80::a00:27ff:fe56:5114/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:2436 (2.3 KiB)  TX bytes:1264 (1.2 KiB)

※eth1がブリッジアダプタで、開発時はこのアドレスにアクセスします。

問題が無ければ、ここで一度 yum update でシステムのアップデートをします。

[vagrant@localhost ~]$ sudo yum update

以上で仮想環境の作成が完了です。
これからは開発環境として関連するソフトウェアのインストールをしていきます。

※再起動した際、共有フォルダのマウントで以下のエラーが発生した場合

==> default: Mounting shared folders...
    default: /vagrant => /Users/[ユーザーid]
Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` vagrant /vagrant

The error output from the last command was:

/sbin/mount.vboxsf: mounting failed with the error: No such device

VirtualBox の Guest additions を再セットアップすると治るようです。

[vagrant@localhost ~]$ sudo /etc/init.d/vboxadd setup
Removing existing VirtualBox non-DKMS kernel modules       [  OK  ]
Building the VirtualBox Guest Additions kernel modules
Building the main Guest Additions module                   [  OK  ]
Building the shared folder support module                  [  OK  ]
Building the OpenGL support module                         [  OK  ]
Doing non-kernel setup of the Guest Additions              [  OK  ]
Starting the VirtualBox Guest Additions                    [  OK  ]
[vagrant@localhost ~]$

参考
VirtualBox + Vagrant で自分用のboxファイルを作成する - uehatsu's tech blog
Hashicorp社の新サービスATLASと周辺ツールのまとめ
Vagrantのネットワーク周りのあれこれ | Septeni Engineers' Blog | セプテーニ エンジニアブログ
vagrant upでmountエラーがでる場合の対処法 - Qiita

4.開発環境を構築する。

仮想環境に必要な以下のソフトウェアをインストールします。

  • ライブラリ群
  • rbenv(Rubyバージョン管理)
  • ruby
  • bundler(Gemパッケージ管理)

Rubyバージョン管理システムについてはrvmとrbenvの2つが良く使用されていますが、
rbenvの方がシンプルと言うことでrbenvを採用します。

4-1. ライブラリ群

必要なライブラリをまとめてyumインストールします。

$ sudo yum install kernel-devel git gcc gcc-c++ openssl-devel zlib-devel libyaml-devel libffi-devel readline-devel tcl-devel tk-devel gdbm-devel bison libxml2-devel libxslt-devel patch sqlite-devel

インストールするライブラリ
kernel-devel, git, gcc, gcc+, openssl-devel, zlib-devel, libyaml-devel, libffi-devel,
readline-devel, tcl-devel, tk-devel, gdbm-devel, bison, libxml2-devel, libxslt-devel,
patch, sqlite-devel

4-2. rbenv

GitHubリポジトリからクローンします。

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

設定ファイル .bash_profile に必要な設定を追加します。

$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

設定ファイルを再読込します。

$ source .bash_profile

バージョンを確認します。

$ rbenv --version
rbenv 0.4.0-138-g4d0c289

ruby-buildをGitHubリポジトリからクローンします。

$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

参考
rbenv/README.md at master
ruby-build/README.md at master

4-3. ruby

インストール可能なバージョン一覧を確認する。

$ rbenv install --list

可能な限り最新の安定版をインストールする。

$ rbenv install -v 2.2.0

rbenvを更新し、インストールされているバージョン一覧を確認する。

# 更新
$ rbenv rehash
# 一覧表示
$ rbenv versions
  2.2.0

インストールしたバージョンに切り替えて、確認する。

# 切り替え
$ rbenv global 2.2.0
# 確認
$ ruby --version
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]

インタプリタを起動してRubyを実行してみる。

$ irb
irb(main):001:0> puts "こんにちは世界"
こんにちは世界
=> nil
irb(main):002:0> [ctrl+Dで終了]

参考
Linux - Ruby 2.1.x ソースからコンパイルインストール - CentOS 6.5
rbenv を使って ruby をインストールする(CentOS編) - Qiita

4-4. bundler

Gemパッケージの管理ツールであるbundlerをインストールします。

$ rbenv exec gem install bundler
$ rbenv rehash

参考
Command Reference - RubyGems Guides

5.Railsプロジェクトを作成する。

標準でゲストOSの /vagrant フォルダが共有フォルダになっているのでRailsプロジェクト用に
フォルダを作成する。

$ mkdir /vagrant/rails
$ cd /vagrant/rails

Gemfileを作成

$ rbenv exec bundle init

Gemfileを修正

source "https://rubygems.org"
# railsは最新バージョンを指定する。
gem "rails", "4.2.0"

ちなみにRailsの最新バージョンを確認する場合

[vagrant@localhost rails]$ gem search -r ^rails$

*** REMOTE GEMS ***

rails (4.2.0)

全てのバージョンを確認する場合

[vagrant@localhost rails]$ gem search -r ^rails$ -a

*** REMOTE GEMS ***

rails (4.2.0, 4.1.9, 4.1.8, 4.1.7.1, 4.1.7, 4.1.6, 4.1.5, 4.1.4, 4.1.3, 4.1.2, 4.1.1, 4.1.0, 4.0.13, 4.0.12, (以下省略)

-r オプションはリモートを検索対象に、^rails$正規表現で [行頭]rails[行末] を表している。

Rails を ./vender/bundle ディレクトリにインストールする。

$ rbenv exec bundle install --path ./vendor/bundle

インストールされたGemを確認する。

rbenv exec bundle list
$ rbenv exec bundle list
Gems included by the bundle:
  * actionmailer (4.2.0)
  * actionpack (4.2.0)
       〜略〜
  * rails (4.2.0)
       〜略〜

Railsプロジェクトを作成する。

$ rbenv exec bundle exec rails new project_name --skip-bundle

--skip-bundleオプションを必ず指定すること。
指定しない場合、Rubyのインストール先にGemパッケージがインストールされてしまいます。

作成したRailsプロジェクトのフォルダに移動し、bundle install を実行する。

$ cd project_name/
$ pwd
/vagrant/rails/project_name
$ rbenv exec bundle install --path ./vendor/bundle

GemパッケージをGitの管理対象外とする為、./vendor/bundle ディレクトリのパスを .gitignore に追加する。

$ echo './vendor/bundle' >> .gitignore

Railsアプリケーションを起動してみます。

$ rbenv exec bundle exec rails server --binding=0.0.0.0

多くのWebサイトの情報ではデフォルトで0.0.0.0にバインドすると書いてあったものの、
動かしてみるとlocalhostにバインドされてしまい、他の端末からアクセスできなかったので
-binding オプションで指定してあげます。

(どうやらRails4.2.0から変更があったみたいですね。)

# localhostにバインドされている。(デフォルト)
=> Rails 4.2.0 application starting in development on http://localhost:3000
# 0.0.0.0にバインドする。
=> Rails 4.2.0 application starting in development on http://0.0.0.0:3000

ホストPC(Mac or Windows)からアクセスして Welcome aboard 画面が表示されればRails
起動確認は完了です。

f:id:z_a_ki3:20150227220828p:plain

Rails本体をインストールするためのbundle installとrailsアプリとしてのbundle installがあって、
ちょっと分かりづらいかな・・・

参考
rbenv インストールから Bundler を使用した Rails のローカルインストールと起動まで - Qiita
Rubyアソシエーション: アプリケーションの土台作成
rails serverでポートを指定して起動する - 感謝のプログラミング 10000時間
Rails4.2beta1をインストールして最初にはまったこと TECHSCORE BLOG

## 6.IDEをインストールする。

ここまで来たら既にテキストエディタで開発ができるようになっていると思います。
だいぶ長くなってしまったので、続きは後半で。。。