Help us understand the problem. What is going on with this article?

Ruby on Railsチュートリアルの環境構築をvagrant上でやってみたまとめ

More than 5 years have passed since last update.

はじめに

経緯

社内でRailsの勉強会をやりたい、という話をしていました。

そこで「Ruby on Rails Tutorial
をハンズオン形式でやってみよう!」という話になったのですが、それぞれが使っているOSの違いなどが原因で、上手く進行できなかったりすることもあるかな、というのが懸念としてありました。

「じゃあvagrantを使ってみんな同じ環境で(だめだったら簡単にやり直せるし!)進めていこう!」

というわけで社内向けにvagrantのセットアップからtutorialの第1章(環境構築)までをやってみたまとめを作ったのですが、せっかくなので投稿します。
(僕もRailsやったことないので、間違っているところがあるかも知れません。ご指摘があれば、是非お願いします。。)

Railsを動かすOS

  • CentOS6.5

RubyとRailsのバージョン

  • Ruby 2.1.0
  • Rails 3.2

(tutorialのRails 3.2/4.0 のどっちから始めるべき?というコラムによると、
初学者はまず3.2をやってみるのが良いそうです。)

方針

rails serverができるようになるまでに叩いたコマンドを羅列していきます。

ほとんどはtutorialの内容を転記しただけですが、たまにtutorialには記載のないコマンドを叩く必要もありました。

RVMやGemのインストールなどは基本的にtutorialに沿っていって、うまくいかないところがあったら確認する、という用途で使えればと思っています。
(まだ勉強会開催前なので、実績はありません。。)

vagrantとvirtual boxのインストール

下記よりインストール。
書いている時点でvirtual boxは4.3.10、vagrantは1.5.2でした。
- virtual box
- vagrant

vagrantのセットアップ

初期化及びboxを追加

http://www.vagrantbox.es/より選択します。

今回はCentOSの6.5を使います。

vagrant init https://github.com/2creatives/vagrant-centos/releases/download/v6.5.1/centos65-x86_64-20131205.box

ネットワークの設定

Vagrantfileを開き、下記のコメントを外します。

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

これで192.168.33.10のアドレスで、ホストOSからゲストOSにアクセスできるようになります。

共有ディレクトリの設定

RailsはVM上で動かす想定ですが、コーディングはホスト側の使い慣れた環境やエディタで行いたいので、ソースディレクトリを共有します。

同じようにコメントアウトされている行があるので、下記のように設定します。

config.vm.synced_folder "~/src/rails_projects", "/home/vagrant/rails_projects"

config.vm.synced_folder "ホスト側のディレクトリ", "ゲスト側のディレクトリ"という設定になります。

ホスト側はどこでもいいので、適当にディレクトリを作って設定してください。
ゲスト側はtutorialで指定されている名前にしたいので、なるべく変えない方が良いと思います。

起動

vagrant up

初回は結構時間がかかります。。

色々インストール

仮想マシンにSSHでログインして作業を行います。

vagrant ssh

yumのupdate

まずはyumを最新にしておきます。

sudo yum update

RVM

rubyの管理には、チュートリアル通りにRVMを使います。

インストール

curl -L https://get.rvm.io | bash -s

インストールが終わった段階で、.bash_profileにsource ~/.profileを追記しておいてください、と言われました。

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

    source ~/.profile

追記して、source ~/.bash_profileで読み込んでおきます。

vi ~/.bash_profile #編集する
source ~/.bash_profile

最新化

rvm get head && rvm reload

必要なパッケージをインストール

rvm requirements

rubyのインストール

rvm install 2.1.0 --with-openssl-dir=$HOME/.rvm/usr

gem

gemset作成

rvm use 2.1.0@rails3tutorial2ndEd --create --default

gemのupdate

gemをtutorialの指定バージョンでupdateします。

gem update --system 1.8.24

Rails

インストール

gem install rails -v 3.2.14

アプリケーションの作成

Railsのアプリケーションを作成してみます。

Vagrantfileに共有ディレクトリの設定を行ったので、ディレクトリはもう作られているはずです。

cd rails_projects
rails new first_app

そうすると、bundle installのところで怒られました。

/home/vagrant/.rvm/rubies/ruby-2.0.0-p451/bin/ruby extconf.rb
checking for sqlite3.h... no
sqlite3.h is missing. Try 'port install sqlite3 +universal',
'yum install sqlite-devel' or 'apt-get install libsqlite3-dev'
and check your shared library search path (the
location where your sqlite3 shared library is located).

sqlite-develをインストールし、再度bundle installします。

sudo yum install sqlite-devel
bundle install

再びrails serverを実行すると、今度はJavaScriptのruntimeがないと怒られます。

/home/vagrant/.rvm/gems/ruby-2.0.0-p451@rails3tutorial2ndEd/gems/execjs-2.0.2/lib/execjs/runtimes.rb:51:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)

tutorialを見ると、nodejsがおすすめですと書いてあるので、素直にnodejsをインストールします。

sudo yum install nodejs

再度rails serverを実行すると、今度は成功!

http://192.168.33.10:3000/にホスト側のブラウザからアクセスして、Railsの初期画面が表示されれば成功です!

スクリーンショット 2014-04-17 1.09.52.png

終わりに

ここまでで一章の半分ぐらい(1.5まである中の、1.2.5)です。
勉強会の進行を妨げそうな環境構築作業はもうないかな、という感じがしているのでここで終わります。

まだ読み進めたばかりですが、Rails tutrialは1つ1つのトピックについて幅広く、背景まで含めて深く説明してくれているので、すごく勉強になります。

勉強会が楽しみです!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away