Ruby on Railsのプログラムの開発環境を本番環境に合わせてLinuxで作ってみよう、と考えたことはありませんか。Linuxを使うのはWindowsやmacOSに比べると、少しだけ難しいかもしれません。しかし、本番環境とほぼ同じ環境で開発できるのがメリットです。
今回はRuby on Railsの開発環境をLinuxに作りたいと考えている方に、LinuxへのRubyのインストール方法とRubyのコマンドの基本的な使い方について解説します。
LinuxでRubyの最新版を使うには
Rubyは1995年にまつもとゆきひろ氏によって開発されたオープンソースのオブジェクト指向スクリプト言語です。オープンソースのrubyコマンドは、公開されているソースリストから実行環境を作れさえすれば誰でもRubyの最新版を利用できます。
ではLinuxでRubyを利用するにはどうすればよいでしょうか。Linuxへのインストール方法を知りたい方に、Linuxでもよく利用されているCentOSでRubyの最新版を利用する方法を紹介します。
ソースコードからRubyをコンパイルする
Rubyの公式サイトのダウンロードのページを見ると、幾つかのプラットフォームにインストールする方法と並んで、ソースコードからRubyをインストールする方法が紹介されています。
LinuxにRubyの最新版をインストールする方法として昔から使われている方法が、このソースコードからRubyをコンパイルする方法です。
Linuxが登場してすぐの頃は、標準でRubyが使えた訳ではありません。そのころはは公式サイトなどからソースコードをダウンロードし、それをコンパイルしてRubyの実行環境を作っていました。もちろん、この方法は今でも利用できます。
ソースコードから作るには
先ほどコンパイルしてRubyの実行環境を作る紹介しましたが、Linuxにおけるコンパイルとは、gccコマンドでソースファイルをコンパイルしてrubyの実行モジュールを作成することを指します。
ただし、最小構成のLinuxにgccコマンドはインストールされていません。コンパイルするためにはgccコマンドを含むパッケージの他、コンパイルに必要なコマンドを含む幾つものパッケージをインストールしなければなりません。
Rubyをコンパイルするなら、下記のようなgccコマンドを含むソフト開発に必要なパッケージをインストールしてください。
Rubyをコンパイルするために必要なパッケージ
gcc
make
gzip2
openssl-devel
readline-devel
zlib-devel
ソースファイルからのコンパイル手順
ソースファイルからRubyの実行モジュールをコンパイルする手順を次に紹介します。
(1)ダウンロードする
Rubyの公式サイトからたどれるダウンロードサイトからソースファイルをダウンロードしてださい。
(2)tarコマンドで展開してください。
(3)展開したディレクトリに移動する。
(4)コンパイルする。
次のコマンドでを実行してください。
$ ./configure $ make $ sudo make intsall
これで、/usr/localの下にRubyの実行環境がインストールされます。
上記のコマンドで最初に実行する「./configure」は、コンパイルするLinux環境に合わせたMakefileを作成します。そして、続くmakeコマンドでMakefileに基づいてコンパイルし、Rubyの実行モジュール等を作成します。さらに、管理者権限でmakeコマンドを実行し、作成した実行モジュールを/usr/localをインストールします。
rbenvコマンドを利用する
先ほど、LinuxでRubyのソースファイルからコンパイルし、実行環境を作成する方法を紹介しましたが、/usr/localの下にインストールしてしまうと、違うバージョンを利用する場合に不便です。
そこでRubyの実行環境を構築する際に利用してほしいコマンドがrbenvです。rbenvを利用することで、開発したいシステムに合わせたRubyの実行環境を用意できます。次からrbenvについて紹介します。
rbenvとは
rbenvは、複数のRubyのバージョンを管理し、プロジェクトで利用しているRubyのバージョンに合わせて切り替えられる環境を提供するツールです。
具体的にはLinuxのターミナルで使用するシェルのPATHに、rbenvが管理しているRubyの各バージョンの実行パスを設定します。そのためrbenvには、特定のRubyをソースファイルからビルドする機能と、ビルドしたRubyをPATHに追加する機能、およびそのための管理機能が組み込まれています。
GitHub – rbenv/rbenv: Groom your app’s Ruby environment
rbenvをLinuxにインストールする
rbenvコマンドはmacOSとLinuxで利用できます。なお、macOSとLinuxではインストール方法が違うので注意してください。
CentOSにrbenvをインストールする場合、githubからrbenvとRubyをビルドする環境をコピーします。なお、githubからコピーするにはgitコマンドが必要です。あらかじめインストールしてください。
次にgithubからrbenvをコピーするコマンドを紹介します。
CentOSにrbenvをインストールする例
$ git clone https://github.com/sstephenson/rbenv.git〜/ .rbenv $ git clone https://github.com/sstephenson/ruby-build.git〜/ .rbenv / plugins / ruby-build
上記のコマンドにより、gitコマンドを実行したディレクトリに、.rbenvが作られ、その下にrbenvの実行環境がコピーされます。
rbenvをシェルに組み込む
rbenvは、Linuxのターミナルなどで使われるシェルに組み込むことで、プロジェクト毎にRubyのバージョンを切り替えることが可能です。次に、bashの設定ファイル、.bash_profileにrbenvを組み込む例を紹介します。
.bash_profileへの組み込む例
$ cd $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> .bash_profile $ echo 'eval "$(rbenv init -)"' >> .bash_profile $ source .bash_profile
まずはcdコマンドでホームディレクトリに移り、.bashrc_profileに2行を追加します。そして、sourceコマンドで.bashrc_profileに反映します。この処理の後、rbenv –versionコマンドでバージョンが表示されれば設定終了です。
LinuxでRubyを実行する際の設定
自分でコンパイルしたりrbenvコマンドを使って準備したりしてRubyの最新版を用意できたら、さっそくRubyを使ってみましょう。
Rubyでプログラムを実行するなら、引数にプログラムを記述したソースファイルを指定します。しかし、Rubyの使い方はそれだけではありません。多くのオプションを指定できます。
次からLinuxでRubyコマンドの便利な機能と注意点について紹介します。
Rubyコマンドのオプション
Rubyは、rubyという実行ファイルがプログラムのソースファイルを解析しながら実行する、インタープリタ型のプログラム言語です。通常、次のように実行します。
ruby ソースファイル
上記のrubyコマンドには多くのオプションを指定できます。利用できるオプションは、ruby –helpと実行することで一覧を表示できます。
なお、rubyコマンドには多くのオプションがありますが、次の2つはよく使うので、ぜひ覚えてください。
よく使われるrubyコマンドのオプション
-v バージョンを表示する
-c プログラムのチェックのみ実行する
Rubyが参照するシェル変数
LinuxのターミナルからRubyを実行する場合、bashなどのシェルからrubyコマンドを実行します。そして、rubyコマンドはシェル変数に設定されている環境変数を参照します。
なお今使っているシェルの環境変数はenvコマンドで表示可能です。例えば、次のコマンドを実行してみてください。環境変数に設定されているホームディレクトリを表示できます。
$ env | grep HOME
rubyコマンドは、シェルに設定されたの環境変数のうち、次の変数を参照します。
RUBYOPT (Rubyインタプリタにデフォルトで渡すオプションを指定します。)
RUBYPATH (-Sオプション指定時に調べるディレクトリに追加します。)
RUBYLIB (Rubyのライブラリの探索パスに、この環境変数の値を追加します。)
LinuxでRubyのエラー原因を調べるには
Linuxのターミナルでrubyコマンドを実行しエラーやワーニングが発生した場合、そのメッセージがターミナルに表示されます。しかし多くのメッセージをターミナルに表示するようなプログラムでは、重要なメッセージを見逃してしまいます。
そのような場合、Rubyから出力される通常のメッセージとエラーやワーニングを分けて出力する方法を検討してください。なお、エラーやワーニングなどのプログラムに関する重要なメッセージはログファイルに出力できます。ぜひ、このような方法を利用してください。
まとめ
クラウド上で稼働しているWebサーバーのほとんどがLinuxだと言っても過言ではありません。Ruby on Railsで作られたWebシステムがLinuxで稼働しているので、開発環境もLinuxを使っているケースも多いでしょう。
LinuxでRubyを使うには、自分でソースファイルからコンパイルする方法もありますが、rbenvコマンドを使い本番で利用するRubyのバージョンに合わせて環境を作ることが可能です。
Ruby on Railsのシステム構築にLinuxを使う方は、ぜひ、今回の記事を参考にしてください。