🤖

Rails Gemについて

2023/04/06に公開

Gem(ジェム)とは?

それぞれのプログラミング言語には、フレームワークやライブラリと呼ばれる開発を助けてくれるパッケージがある。
フレームワークとライブラリの違いは、フレームワークは「処理全体の流れ」を提供しており、ライブラリは「特定処理のためのパーツ」を提供しているイメージ!!

Gem は、GitHub に公式のリポジトリがあり、そこに保管されている README で確認できることが多い

ライブラリの特徴

  1. 汎用性の高い機能を他のプログラムで呼び出して使えるように機能を部品化してあつめたファイルのこと
  2. 単体では動作せず、部品化した機能を他のプログラムから呼び出して利用する

Rubyのライブラリの種類

Rubyには、標準ライブラリ、組み込みライブラリ、外部ライブラリがある!
ライブラリによっては、「インストール」や「読み込み」が必要な場合あり。

種類 説明 インストール 読み込み
標準ライブラリの組み込みではないライブラリ Rubyインストール時にRuby本体としてインストールされるライブラリ 不要 必要
標準ライブラリの組み込みライブラリ Ruby本体に組み込まれるライブラリ(標準ライブラリに属する) 不要 不要
外部ライブラリ 有志の開発者が他の開発者も使えるように開発したライブラリ(※Rubyインストール時に一緒にインストールされるものもある) 必要 必要

上記の表にあるように「外部ライブラリ」は有志の開発者が開発したライブラリで、機能を使うには「インストール」と「読み込み」が必要!!

gemは外部ライブラリなので、gemを使う場合は「インストール」と「読み込み」が必要ということ。

外部ライブラリとは、有志の開発者が他の開発者も使えるように開発したライブラリのこと

gem(gemパッケージ)とは

Rubyではほとんどの外部ライブラリは、gem形式(名前-バージョン.gem)という1つのファイルに(パッケージング)まとめられている。

このように外部ライブラリのフォルダやファイルを1つのgem形式のファイルにパッケージングされたものをgem(gemパッケージ) と呼ぶ!

補足説明💡
実は、Rubyのフレームワークとして知られているRailsもgem(gemパッケージ)として提供されています。Railsでは、gemを利用してアプリケーション開発を進めることができますが、Rails自体が多くのgemで構成されています。

RubyGemsとは?

  • Ruby 1.9 以降からの標準ライブラリ
  • gemを管理してくれるパッケージ管理システム
  • gemコマンドを使うことでgemのインストールなど操作を簡単に行える

Bundler

Bundlerとは、gemのバージョンや依存関係を管理してくれるgem。

詳しくは
https://pikawaka.com/rails/bundler

Gem を導入する手順

  1. Gemfileというファイルに、インストールしたい Gem を記述する
  2. bundle installというコマンドを実行し、Gem をインストールする

Gemfile とは?

"Gemfile"とは、Rails アプリケーションで使用する Gem を記述しておく、設計書に当たるファイル

  1. Gemfile を開き、以下のように、ファイルの最後に 1 行追加して保存
gem 'devise'

設計書である Gemfile に、インストールしたい Gem を追加することができた!
この時点では Rails アプリケーションにインストール「されていない」ことに注意!!

bundle install とは?

"Gemfile"に記述したGemを、Railsアプリケーション内で使用できるようにインストールするためのコマンド
「設計書に書いた内容を反映させる」ためのコマンド!

bundle install

devise とは

ユーザー認証機能作成のためのGem
README
https://github.com/heartcombo/devise
日本語訳
https://qiita.com/gakkie/items/6ef70c0788c3cbff81ee

devise のインストール

devise のインストールコマンドを実行
devise の場合は Gem をインストールした後に、改めてインストールの手順が必要!

rails g devise:install

devise の基本操作

deviseはモデル、ビュー、コントローラを作成するための独自のコマンドを持っている。

モデル作成

rails g devise User

devise を使うと、記述が変わることに注意!この記述はdevise 独自のルール

作成された機能

:database_authenticatable(パスワードの正確性を検証)
:registerable(ユーザ登録や編集、削除)
:recoverable(パスワードをリセット)
:rememberable(ログイン情報を保存)
:validatable(email のフォーマットなどのバリデーション)

作成した User モデルに devise で使用する機能が記述されている」ことを覚えておく!!

作成された devise のユーザーテーブルを確認
作成された migration ファイルを確認(db/migrate フォルダ内にある(年月日時分秒)_devise_create_users.rbファイル)
最初からメールアドレスとパスワードのカラムが用意されている。

Routing
devise のモデルを作成したことで、config フォルダの routes.rb ファイルには、ルーティングが自動的に追加されている

devise をインストールして、deviseのモデルを作成しただけで、以下の最低限の認証機能が完成しています。

  • 必要なカラムが用意されている
  • ルーティングが自動で追加されている
  • devise が持っている、基本的な View を表示させる

まとめ

  • Gem は「どう使うか」を理解していくことが重要
  • Gem の使い方は README に書いてあることが多い。英語の場合は翻訳機能を使って、日本語に直して理解する
  • 新しい Gem を Rails アプリケーションで使用するためには、Gemfile に記述し、bundle install を実行する必要がある
  • devise を使用するためには、Gem のインストール後に改めて devise 自体のインストールが必要である
  • devise の機能を使用する場合、devise 独自のコマンドでモデルを作成する必要がある
  • devise のモデルを作成することで、routes.rb に自動的にルーティングが追加される
  • devise でモデルを作成した時点で、基本的な準備は整っており、サインアップやログインなどの画面は表示できる
  • 会員登録やログインに必要な情報を編集するためには、以下の手順が必要
  • View : devise のコマンドを使用して View ファイルを作成して編集する
  • Controller : ApplicationController に、devise 独自の追加の記述を行う
  • devise のヘルパーメソッドを使用することで、ログインしている時としていない時で、ブラウザ上の表示を変更できる

Gemについてまとめて調べてみて何となく理解できたかな
今日はアプリケーションを完成させよう2を一通り読んで、頭には全然入ってないし理解も追いついてないけど
明日からわからないことはメンターさんに聞きながらきちんと理解して進めていきたい!

今日は新宿校舎で勉強してみて、モニターがないのは残念だったけど、結構集中できたので
家で勉強するのに疲れた時にまた利用したい!

Discussion