Logs

来世はねこです

大名エンジニアカレッジ 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つ

  1. Gemfile に使用するGemを書く
  2. 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コマンドを実行すると、bin/railsファイルが実行され、その中でbundle exec相当の処理を行っています。

私の感想

Railsは、、、

Webアプリをかんたんに作るGemの集合体として設計されている。➡️ とても大事なのでは?

みんなで話してみたこと