必須知識ノート【Ruby on Rails】

はじめまして、フリーランスのますみです!

一人一人が自立・共存・革新している「クリエイターエコノミー」を創る。』というビジョンに向けて活動しています。

この記事では、Railsに関わる必須知識を引き出し式でまとめていきたいと思います。

「あのコマンドでなんだっけ?」、「この言葉ってどういう意味なんだろう?」というようなことをまとめていきます。

また、知識を得たタイミングで少しずつ更新していきたいと思います。

コマンドリスト

1. Rubyのバージョン確認方法

$ ruby -v
ruby 2.5.5p157 (2019-03-15 revision 67260) [x86_64-darwin18]
$ ruby --version
ruby 2.5.5p157 (2019-03-15 revision 67260) [x86_64-darwin18]

2. Railsのバージョン確認方法

$ rails -v
Rails 6.0.3.2
$ rails --version
Rails 6.0.3.2

3. Railsサーバー起動方法

$ rails server
=> Booting Puma
=> Rails 6.0.3.2 application starting in development
=> Run `rails server --help` for more startup options
Puma starting in single mode...
* Version 4.3.5 (ruby 2.5.5-p157), codename: Mysterious Traveller
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://127.0.0.1:3000* Listening on tcp://[::1]:3000
Use Ctrl-C to stop

4. Gemのイントール方法

例として、bundlerをインストールしてみます(バージョンは-vで指定)。

$ gem install bundler
Successfully installed bundler-2.1.4
Parsing documentation for bundler-2.1.4
Done installing documentation for bundler after 4 seconds
1 gem installed
$ gem install bundler -v "2.1.4"
Successfully installed bundler-2.1.4
Parsing documentation for bundler-2.1.4
Done installing documentation for bundler after 4 seconds
1 gem installed

5. 起動しているRailsサーバーを落とす方法

サーバーを起動した状態で、terminalを閉じてしまうと起動したままになってしまいます。

そのため、Ctrl-Cでサーバーを落とすことができなくなります、そこで、もう一度rails serverでサーバーを起動させようとすると、以下のようなエラーが出ます。

$ rails s
=> Booting Puma
=> Rails 5.2.2 application starting in development
=> Run `rails server -h` for more startup options
A server is already running. Check /Users/xxx/yyy/zzz/tmp/pids/server.pid.
Exiting

こういう時は、以下のようにして起動しているRailsサーバーを検知して、落とす(kill)することができます。まずlsofコマンドで起動しているサーバーを表示します。そして、そのサーバーのPIDをkillすれば完了です。

$ lsof -i:3000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 19876 masumi.morishige 8u IPv4 0x9r93h9dc4t82g67d 0t0 TCP *:hbci (LISTEN)
$ kill -9 19876

大切な用語辞典

1. Rakeとは?

Rakeとは、「Railsにおけるビルドツール」です。

この時、rakeコマンドを用いて、「設定ファイルに記述された作業の実行」を行なっています(rails v5以降のみ)。例えば以下のようなコマンドがあります。

$ rake db:create

ちなみに、上記のコマンドは、以下のコマンドで代替えすることも可能です。

$ ./bin/rails db:create

./binフォルダにあるrailsというファイルがビルドを行うための処理が記述されているため、ほぼ同義と考えていいでしょう。ただし、generateコマンドなどは、rakeでは実行できません。./bin/railsファイルの中身は以下の通りです。

#!/usr/bin/env ruby
begin load File.expand_path('../spring', __FILE__)
rescue LoadError => e raise unless e.message.include?('spring')
end
APP_PATH = File.expand_path('../config/application', __dir__)
require_relative '../config/boot'
require 'rails/commands'

【参考:Railsのrakeってなんぞ?】

2. Bundleとは?

Bundlerとは、「gemのバージョン管理gem」です。

以下のように導入とバージョン確認を行うことができます。

$ gem install bundler
Successfully installed bundler-2.1.4
Parsing documentation for bundler-2.1.4
Done installing documentation for bundler after 4 seconds
1 gem installed
$ bundler -v
Bundler version 2.1.4

【参考:Bundlerとは?】

3. Gemとは?

Gemとは、「Rubyにおけるパッケージ(ライブラリ)」です。

パッケージ管理システムのことをgemと言ったりすることもあります。

【参考:Rubyのgemとは?概要から使い方までの解説まとめ】

4. CRUDとは?

CRUDとは、「Create, Read, Update, Deleteの頭字語(Acronym)」です。

それぞれ以下のようにデータに対する処理になります。

  • Create:作成
  • Read:読み取り
  • Update:更新
  • Delete:削除

5. MVCとは?

MVCとは、「Model, View, Controllerの頭字語(Acronym)で、Webフレームワークの基本概念の一つ」です。

それぞれ以下のような役割を持っています。

Model(モデル)

システムの設計や機能の定義を行うグループです。

以下のような役割を持っています。

・データベースとやり取りを行う機能

・データの変換機能

View(ビュー)

ユーザーに対して情報を表示したり、ユーザーの入力を受け取るグループです。

以下のような役割を持っています。

・動的にデータをブラウザに表示する機能

・ユーザーに入力フォームを提示して、データを受け取る機能

Controller(コントローラー)

ユーザーの入力に基づきモデルとビューを制御するグループです。

以下のような役割を持っています。

・ユーザーから来たリクエスト(URLへのアクセス)を受け取る機能

・リクエストに応じて、Modelを経由して、データベースからデータを取得する機能

・Modelから受け取ったデータをViewへ渡す機能

・生成されたHTMLをクライアントへ渡す機能

全体のフロー

具体的なデータややり取りの流れは以下のようになっています。

【参考:MVCモデルとは!概念やそのメリットをわかりやすく解説!】

6. Scaffoldとは?

Scaffoldとは、「MVC(Model, View, Controller)とルーティングの作成などをまとめて行なってくれる超便利コマンド」です。直訳すると「建築現場における足場」のような意味になります。

正直開発現場ではあまり使われませんが、個人開発でサクッと作りたいときには大変便利です。以下のようなコマンドで生成することができます。

$ rails generate scaffold user name:string age:integer

7. ミドルウェアとは?

ミドルウェアとは、「アプリケーションとOSの中間に存在する処理を実行するサーバー」です。

まずコンピュータは、以下のような構成要素でできています。

MVC

具体的には、ミドルウェアとは、Webサーバ、アプリケーションサーバ、データベース管理サーバなどを表します。MVCのモデルを拡張した図は以下のようになります。

MVC

この他にも、システム運用ミドルウェア(バックアップ、ジョブ運用の効率化、システムの監視、高可用性クラスタによる冗長化など)が存在します。

【参考:ミドルウェアとは?役割や機能、種類をわかりやすく解説!】

最後に

いかがだったでしょうか?
この記事を通して、少しでもあなたの困りごとが解決したら嬉しいです^^

おまけ(お知らせ)

エンジニアの仲間(データサイエンティストも含む)を増やしたいため、公式LINEを始めました🎉

「一緒に仕事をしてくれる方」「友だちとして仲良くしてくれる方」は、友だち追加をしていただけますと嬉しいです!(仲良くなった人たちを集めて、「ボードゲーム会」や「ハッカソン」や「もくもく会」もやりたいなと考えています😆)

とはいえ、みなさんにもメリットがないと申し訳ないので、特典を用意しました!

友だち追加後に、アンケートに回答してくれた方へ「エンジニア図鑑(職種20選)」のPDFをお送りします◎