Ruby
RubyOnRails

Ruby on Railsの開発環境の構築

先日、エンジニアの友人に会い、これから作りたいサービスについて話しました。まずはウェブ上で動くサービスをつくっていきます。そのために、Ruby on Railsの開発環境の構築について学んだので、備忘録として書いておきたいと思います。

仮想環境の構築

まず、仮想環境について簡単に。自身のPC(macやWindows)上で動くプログラムが、サーバー(linux)上でも同じように動作させるために、OSを揃える必要がある。

VirtualBoxなどの仮想化ソフトウェアを利用して、PCの中にコンピューター(仮想)を作成、そこにLinuxのOSをインストールすることで、同一のPC内にLinuxで動作するコンピューターを持つことができる。

Virtual Boxをインストール

この仮想化ソフトウェアを使うことで、自分のPC内(ホストOS)に、別のOSで動作するコンピューター(ゲストOS)を持つことができる。
https://www.virtualbox.org/wiki/Downloads

Vagrant(ベイグラント)をインストール

仮想化ソフトウェアで仮想マシンを作成したり、起動、アクセスなどを非常に簡単なコマンド入力で実現できる。また、開発チームでは、Vagrantfileを共有するだけで、同じ環境の仮想マシンを構築できるという利点もある。
https://www.vagrantup.com/downloads.html

VagrantでCentOS7(Linux)をインストール

Vagrantがインストールされたことを確認

$ vagrant -v
Vagrant 2.0.3

OS用のディレクトリを作成し、移動

$ mkdir -p vagrant/centos7
$ cd vagrant/centos7

仮想環境へCentOS7(Linux)をインストール

$ vagrant init centos/7
#CentOS7用のVagrant設定ファイルを作成

# config.vm.network "private_network", ip: "192.168.33.10"
↓
config.vm.network "private_network", ip: "192.168.33.10"
#仮想環境の上 CentOSのIPアドレスを指定するためにコメントを外す

$ vagrant up
#vagrantの起動

仮想環境へログイン

仮想環境上のCentOSにログイン

$ vagrant ssh
[vagrant@localhost ~]$

仮想環境の起動と停止について

開発トラブルの元となるので、Linuxのセキュリティ関連機能であるselinux (エス・イー・リナックス)を無効化しておく。

#selinux を無効化する
$ sudo sed -i "s/\(^SELINUX=\).*/\disabled/" /etc/selinux/config

#CentOS からログアウトする
$ exit

#Mac または Windows から CentOS をシャットダウンする
$ vagrant halt

$ vagrant up #CentOSを起動 

$ vagrant ssh   #CentOSにログイン
[vagrant@localhost ~]$

rbenv(アール・ビー・エンブ)をインストール

プロジェクトごとに異なるバージョンのRubyを使うことを想定し、Rubyのバージョンを簡単に切り替えるrbenv(アール・ビー・エンブ)をインストールしておく。

yumパッケージをインストール

yumは指定したアプリケーションをインストールする際に、必要なパッケージを勝手にダウンロードしてくれる。

$ sudo yum install -y git gcc openssl-devel readline-devel zlib-devel sqlite-devel gcc-c++ libicu-devel cmake vim

rbenvをインストール

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


#以下に関する理解が、まだ曖昧
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile

rbenvが使えることを確認

$ rbenv --version

ruby-buildプラグインを追加

rbenvへRubyをインストールできるように。

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

Rubyをインストール

$ rbenv install 2.4.2

# CentOS環境全体で使えるrubyのバージョンを指定
$ rbenv global 2.4.2    

# ruby のバージョンや設定を反映
$ rbenv rehash     

$ ruby -v
ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-linux]    

Bundler(バンドラー)のインストール

Bundlerとは、Rubyのライブラリ管理ツールのことで、Ruby on Railsや、VagrantもBundler でライブラリ管理している。プロジェクトごとに(bundle install --path vendor/bundleすることにより)Gemを管理できる。

Bundlerを利用することで、アプリケーション単位でgemを管理することができる。即ち、システム側にはgemはインストールせず、アプリケーションディレクトリにインストールするという方法。

$ gem install bundler
$ rbenv rehash

$ bundle -v # bundler がインストールされたことを確認する
Bundler version 1.16.0

Ruby on Railsのインストール

$ mkdir -p app/qiita/sample  # インストールディレクトリを作成
$ cd app/qiita/sample/

# Bundler で管理する gem(ライブラリのかたまり)を記述する⇒
# Gemfile ファイルを作成 
$ bundle init

# gem “rails” のコメントを外す(Viで外してもいい)
$ sed -i 's/# gem "rails"/gem "rails"/g' Gemfile

# Ruby on Rails と関連する gem を自動でインストールする
$ bundle install --path vendor/bundler

# Ruby on Rails の雛形を作成(bundle execとつけて実行すると、そのRailsプロジェクトのGemfileで指定された環境で実行する事ができるようになる。)
$ bundle exec rails new .   

# javascript のランタイムの gem のコメントを外す
$ sed -i "s/# gem 'therubyracer'/gem 'therubyracer'/g" Gemfile

# javascript のランタイムをインストールする
$ bundle install  

Ruby on Railsを起動

$ bin/rails s

Webブラウザで、http://192.168.33.10:3000/ にアクセス

疑問

Q.仮想環境で高機能エディタ(Atom)を使うにはどうしたらいいのか?

A.sshfsを使う?仕組みがよく理解できていない。

Q.rbenvのechoとは何か?

A.ログイン時に読み込まれる設定ファイルを、vimで開いて編集するのではなく、echoを使うことでターミナルから直接に追加している。

この記事は、以下の記事を参考に、備忘録として書きました。感謝。

初心者でもかんたん!Ruby on Rails の開発環境の構築手順
プログラミング未経験者がローカル開発環境を構築するための基礎知識
Vagrantの使い方
VirtualBox
Linuxの「パッケージ」と「yum」と「rpm」について勉強したのでまとめてみた。
rbenvとは?(rbenvを利用したRubyのインストール)
【ATOMエディタまとめ】インストール方法と基本を紹介
MacでPATHを通す
PATHを通すとは? (Mac OS X)
PATHを通すために環境変数の設定を理解する (Mac OS X)
.bash_profileとは
bundler、bundle execについて
Bundlerの使い方
システムのgemにrailsをインストールせずrails newする