#Ruby+gems+Railsインストールガイド
動作環境
Component | Version |
---|---|
Centos | 6.6 |
##1 Rubyの関連ツールをインストール
yum -y update
yum -y install gcc-c++ patch readline readline-devel zlib zlib-devel
yum -y install libyaml-devel libffi-devel openssl-devel make
yum -y install bzip2 autoconf automake libtool bison iconv-deve
##2 Ruby Version Manager(RVM)をインストール
curl -L get.rvm.io | bash -s stable
cd /usr/local/rvm/archives/
find /usr/local/rvm/archives -name "*.tgz" | xargs tar xzvf
version=`find . -maxdepth 1 -type d | awk -F "-" '{print $2}'`
version=`echo $version | sed "s/\r//g"`; cd "rvm-$version"
./install
source /etc/profile.d/rvm.sh
##3 Ruby&gemsをインストール
rvm install 1.9.3
rvm install 1.8.6
##4 デフォルトのRubyバージョンを指定
rvm use 1.9.3 --default
ruby --version
##5 Railsのインストール
gem install rails
==10分程度かかるはずだが、あまりに遅い場合は下記を実行==
echo 'options single-request-reopen' >> /etc/resolv.conf
#Ruby Gemsのインストール
##1 Rubyを最新版に更新します。(1.8系はNG)
###1.1 RVM(Ruby Version Manager)を使って、Rubyを最新版に更新
###1.2 Ruby2.2.1をインストール
rvm list known
rvm install 2.2.1
ruby -v
# ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]
##2 ダウンロードとインストール
###2.1 下記URLからダウンロードします。
yum -y update
yum -y install rubygems
yum install ruby-irb
gem update --system
##3 bundlerをインストールします。
==bundlerは、javaでいうところのantやmavenのようなもの。必要なライブラリを自動でダウンロード、配置してくれるものです。==
####bundlerの利点:使用するgemのバージョンを指定できる
あるプロジェクトではtwitter gem 5.x系を、別のプロジェクトでは4.x系を使いたい場合、bundlerなしでrequire 'twitter'
と、すると、どちらのプロジェクトでも、バージョンの大きい5.xを読み込んでしまう。そのマシンに存在する最もバージョンの大きいtwitter gemを読み込んでしまうのだ。つまり、新しくtwitter gemを使ったプロジェクトを始めるだけで、古いプロジェクトは何も手を触れていないのに壊れてしまう。
作ったプログラムが1年後もちゃんと動くにはbundler必須である。
gem install bundler
###3.2 Gemfileを編集します。
####3.2.1 使用するgemを、Gemfileに列挙します。
gem init
->/root/Gemfileに、ひな形が生成されます。
/root/Gemfile
source "https://rubygems.org"
gem 'sinatra'
gem 'sinatra-contrib'
※意味 – sinatraはどのバージョンでもいい、オートリロードをするsinatra-contribを入れる。
###3.3 bundle install
Gemfileを作成したディレクトリでbundle install
を実行してください。--path
を指定しないとRuby環境のGemディレクトリにインストールされてしまいますので気を付けましょう。ディレクトリ名はvender/bundle
が推奨されているようです。
また、毎回--pathを指定するのも面倒ですのでbundle config --global path
コマンドで初期値を設定しておきます。
bundle install --path vendor/bundle
bundle config --global path 'vendor/bundle'
##4 bundlerで指定したgemを使います
※これやらないと、システムに入っている最新版gemを使ってしまいます。
###4.A 実行時に指定する方法
今まで
ruby foo.rb
rackup config.ru
等で実行していたのを、
bundle exec ruby foo.rb
bundle exec rackup config.ru
とする。
###4.B スクリプト内で指定する方法
- a)使用バージョンがGemfile.lockに書かれている物に固定されます。
require 'bundler/setup'
- b)gemを一括requireする方法。
Bundler.require
==注意点==
※Gemfileはカレントディレクトリにある物を参照するので、crontabで使う場合はプロジェクトの中にcdしてからrubyしないといけません。
- 7時30分に実行する例
30 7 * * * cd $HOME/src/ruby/myapp && bundle exec ruby start.rb > /dev/null 2>&1
##5 サンプルプログラムを配置
- myapp.rb(場所はどこでも良い。)
Bundler.require
get '/' do
"Hello world "
end
- 実行
bundle exec ruby myapp.rb -o 0.0.0.0 -p 12345
#References