大名エンジニアカレッジ Ruby on Rails基礎コース 4(2)
「Railsの教科書」を読書会形式で、担当者を決めて読み進めていきます。
2020.11.24は、第5章「モデル」」「2.7 データベースはいつ作られたの」〜第6章「Gemライブラリ」 こちらは後半の「Gemライブラリ」です。
第6章「Gemライブラリ」
この章で学ぶこと。
- Gemについて
- Gemfile
- bundleコマンド
1) Gemライブラリ
ライブラリとは
プログラミングの世界では便利なプログラムがたくさん用意されている。いろいろなプログラムで共通して使える公開されたプログラムのこと。
Gemとは
Rubyの世界のライブラリのこと。
rubygems.orgで公開されている。(10万を超えるGemが登録されている。)
RailsはWebアプリをかんたんに作るGemの集合体として設計されている。
2) Gemをインストールして利用する。
コマンドはrails i
rails install
でも。
実践例として、awesome_printというGemをインストールしてみる。
$ gem i awesome_print
awesome_printは、pメソッドをより見やすい形で拡張させたapコマンドを提供。きれいに表示するapメソッドを提供すると言うこともできる。pの代わりに使う。
入れてみる。
$ gem i awesome_print
- 最新バージョンがインストールされる(数字が示しているところ)
`Successfully installed awesome_print-1.8.0`
- requireを実行することで、利用できる。
- 使い方はGemによって異なるので、Gem名でドキュメントを検索して調べる。(Githubに用意されていることが多い)
irbで実行してみる。きれい、見やすい。
irb(main):002:0> require "awesome_print" => true irb(main):003:0> ap [1,2,3] [ [0] 1, [1] 2, [2] 3 ] => nil #比較するためにpメソッド irb(main):004:0> p [1,2,3] [1, 2, 3] => [1, 2, 3]
3) BundlerとGemfile
Bundlerとは
Gemの管理を簡単にしてくれるしくみ
Gemの数だけひとつひとつインストールするのは面倒。管理もしづらくなる。Gem群として扱えるようになる。
手順は2つ
- Gemfile に使用するGemを書く
bundle install
実行
Railsアプリは、最初からBundlerの仕組みを利用するようになっている。
books_app
では、books_app/Gemfile
試しに、先ほどのawesome_print gemを追加してみる。
Gemfileの中、どこでもよい。ここでは最後に入れてみようか。(最終行に追加して保存)
その後、ターミナルでbundle install
を実行。
コンソールを立ち上げて試してみる。
require
を書く必要がない。(書いても大丈夫)- 公開されているRubyプログラムにGemfile が添えられている時は、
bundle install
を実行してからプログラムを実行しよう。ドキュメントで省略されていることも、
GemfileとGemfile,lock
発注書と納品書のようなもの。一対。Gemfile.lockはbundle install
すると自然にできる。Gemfile.lockは編集しない。
4) Gemfileに書かれたGemのバージョンアップ
Gemを新しいバージョンに更新したい時は、bundle update
。全部のGemが対象になり、新しいものがある場合は更新され、Gemfile.lockも更新される。
特定のGemだけをアップデートしたい場合は、`bundle update Gem名。(使用時に利用している他のGemもセットで更新される。)
5) Gemfileに書かれたGemを使って実行する。
更新後、古いバージョンはそのまま残る。古いバージョンを使いたい場合。
bundle exec 実行したいコマンド
railsコマンドを実行すると、bin/railsファイルが実行され、その中でbundle exec相当の処理を行っています。
6) Gemfileでのバージョン指定
Gemfileにバージョンを追記する。
~>
は、例えば~> 1.4
>= 1.4.0かつ < 1.5
という意味
バージョンアップの表記の使用はBundlerのページを参照。
7) まとめ
考えてみよう。
- ライブラリとは
- Gemとは
- インストールするコマンドは
- Bundlerとは
- Gemfileと実行するコマンド
- GemfileとGemfile.lockファイル(両方ともソース管理対象)
今回使ったコマンド
質問
私の感想
Railsは、、、
Webアプリをかんたんに作るGemの集合体として設計されている。➡️ とても大事なのでは?