はじめまして、フリーランスのますみです!
『一人一人が自立・共存・革新している「クリエイターエコノミー」を創る。』というビジョンに向けて活動しています。
この記事では、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'
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
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の中間に存在する処理を実行するサーバー」です。
まずコンピュータは、以下のような構成要素でできています。
具体的には、ミドルウェアとは、Webサーバ、アプリケーションサーバ、データベース管理サーバなどを表します。MVCのモデルを拡張した図は以下のようになります。
この他にも、システム運用ミドルウェア(バックアップ、ジョブ運用の効率化、システムの監視、高可用性クラスタによる冗長化など)が存在します。
【参考:ミドルウェアとは?役割や機能、種類をわかりやすく解説!】
最後に
いかがだったでしょうか?
この記事を通して、少しでもあなたの困りごとが解決したら嬉しいです^^
おまけ(お知らせ)
エンジニアの仲間(データサイエンティストも含む)を増やしたいため、公式LINEを始めました🎉
「一緒に仕事をしてくれる方」「友だちとして仲良くしてくれる方」は、友だち追加をしていただけますと嬉しいです!(仲良くなった人たちを集めて、「ボードゲーム会」や「ハッカソン」や「もくもく会」もやりたいなと考えています😆)
とはいえ、みなさんにもメリットがないと申し訳ないので、特典を用意しました!
友だち追加後に、アンケートに回答してくれた方へ「エンジニア図鑑(職種20選)」のPDFをお送りします◎