##はじめに
経緯
社内で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でした。
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の初期画面が表示されれば成功です!
終わりに
ここまでで一章の半分ぐらい(1.5まである中の、1.2.5)です。
勉強会の進行を妨げそうな環境構築作業はもうないかな、という感じがしているのでここで終わります。
まだ読み進めたばかりですが、Rails tutrialは1つ1つのトピックについて幅広く、背景まで含めて深く説明してくれているので、すごく勉強になります。
勉強会が楽しみです!