Ruby on Rails
Rails について
Ruby on Rails は MVC で有名なサーバーで動くプログラムである。サーバは web サービスを利用するユーザーの要求や処理を行うプログラムである。 MVC はそれぞれ Model、View、Controller の頭文字からとられた言葉である。サーバーで動くプログラムは PHP のような各エンドポイント毎に1つの PHP プログラムファイルがあり、 簡単に処理されるものから、こういったフレームワーク構成されたものまで数多く存在する。
Rails の特徴である MVC は、プログラムコードの役割を大雑把に分けたものである。
- Model は主にデーターベースとのやりとりやデータのバリデーションを担う。
- View はその名の通り、主に HTML と Javascript が動くフロントの処理をになっている。
- Controller はユーザーと web サービスの間のやりとりを処理する役割である。
Rails にはいくつか設計思想があり、開発をサポートしている。
同じことを繰り返すな(Don't Repeat Yourself: DRY)
「システムを構成するあらゆる部品は、常におのおの重複することなく 1 つであり、明確であり、信頼できる形で表現されていなければならない」のが本来あるべき姿である。 同じプログラムコードを繰り返し書くことを徹底的に避け、プログラムコードを保守しやすく、容易に拡張でき、バグ(隠れた不具合)をとにかく減らすことを目指す。
設定より規約を優先する(Convention Over Configuration:CoC)
Web アプリケーションで行われるさまざまなことを実現するための最善の方法を、過去の経験や慣習に基づいて明確に描き出し、Web アプリケーションにおいて最適と考えられるものを規約として定める。
これは一見、開発者の自由を奪うようだが開発者が誰でも当たり前に行う部分をルール化し、それ以外の創造的な作業に集中できる環境を作っている。 Rails の規約に従うことは、開発者が準備に時間を割くことを省き、必要な開発にだけ着手できるようになる。
準備
Mysql
Ruby on Rails は sqlite、mysql、postgresql の3つをメインに利用できる。デフォルトでは sqlite が使われる。 このテンプレートでは Mysql を利用する。
brew install mysql
openssl
M1 Mac の Ruby on Rails で Mysql を使うときに利用する mysql gem で openssl のエラーが発生する。 openssl はバージョンが 1 系と 3 系がある。openssl はさまざまなプログラムで利用され、この 1 から 3 への移行がまだうまくいっていない。 Ruby on Rails の mysql gem でも明示的に openssl を指定しないとエラーが発生する。
詳しい対処法は次のページで紹介するが、あらかじめ openssl@3 をインストールしておく。
brew install openssl@3
インストール後、メッセージで表示されるコマンドを実行する。
echo 'export PATH="/opt/homebrew/opt/openssl@3/bin:$PATH"' >> ~/.zshrc
rbenv
Mac に標準搭載されている ruby は大体バージョンが古い。 Rails は ruby のバージョン指定が厳格だったり、互換がない場合もあるので、そう言った要求に柔軟に対応できるようにする。 rbenv は任意のバージョンの ruby をインストールできる。また、いくつものバージョンを同時に Mac に搭載でき、 特定のフォルダでは 2.7.1 を使ったり、別のフォルダでは 3.1.1 を使ったりできる。
brew install rbenv
.zshrcを開き、いかを書き込む。
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
インストールが可能な ruby の確認
rbenv install --list-all
ruby
ruby のバージョンは基本的に最新版を利用した方が良い。もちろん、Rails や Gem で互換性がない可能性もある。その場合はバージョンを戻すなどして対処する。 2022/05 時点では 3.1.1 が安定して利用できる。
rbenv install 3.1.1
インストールされた ruby の確認。
rbenv versions
Mac 全体で 3.1.1 を利用する。
rbenv global 3.1.1
したのコマンドを実行し、3.1.1 と出ればインストール成功。`
% ruby -v
ruby 3.1.1p18 (2022-02-18 revision 53f5fc4236) [arm64-darwin21]
これで準備完了