Gemについて
Gemの追加
ライブラリ
ある特定の機能を持ったコンピュータプログラムを他のプログラムから呼び出して利用できるように部品化し、そのようなプログラム部品を複数集めて一つのファイルに収納したものをライブラリという。
ライブラリはrubyやrailsに限ったものではなく、プログラミング言語全般で利用される。
Gem(ジェム)
RailsはGemと呼ばれる便利なrubyライブラリをインストールして利用することで、より簡単にアプリケーション開発をすることができる。gemには開発を効率化してくれたり、会員登録サービスが簡単にできるなど便利なものがたくさんある。Railsアプリケーションは全てをゼロから作るのではなくgemのライブラリも利用することでより効率的に開発することができる。
Gemfileとbundle install
RailsでGemを追加するには「Gemfile」というファイルに「gem ‘Gem名’」と追記し、「bundle install」コマンドを実行する必要がある。「bundle install」コマンドは「bundler」と呼ばれるシステムを利用してGemをインストールするためのコマンド。Gemfileに追記したGemは「bundle install」コマンドを実行することによってインストールされるので、Gemfileを編集した際には必ずこのコマンドを実行する。
【例】
1 2 |
gem 'Gem名'
# Gemの追加
|
1 2 |
$ bundle install
# Gemをインストール
|
Gemfileを開く。
ファイルを開く際は、直接開く方法と、ショートカットキーで開く方法がある。直接開く場合は、開きたいファイルをクリック。ショートカットキーで開く場合は、「command + p」でディレクトリ内のファイルを検索して開くことができる。
「pictweet/Gemfile」のmysql2とsass-railsのバージョン指定を以下の記述に変更する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
source 'https://rubygems.org'
...
(中略)
...
gem 'rails', '~> 5.2.2', '>= 5.2.2.1'
# Use mysql as the database for Active Record
gem 'mysql2', '0.5.2'
# Use Puma as the app server
gem 'puma', '~> 3.11'
# Use SCSS for stylesheets
gem 'sass-rails', '5.0.7'
...
(中略)
...
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring'
end
|
「pictweet/Gemfile」の以下のような記述を、一番下に追記する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
source 'https://rubygems.org'
...
(中略)
...
gem 'mysql2', '0.5.2'
# Use SCSS for stylesheets
gem 'sass-rails', '5.0.7'
...
(中略)
...
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
gem 'pry-rails'
gem 'compass-rails', '3.1.0'
gem 'sprockets', '3.7.2'
|
Gemfileの一番下に追記する。
初めからインストールされているGemに加えて3つのGemを追加した。また、「mysql2」「sass-rails」というGemに対してはバージョン指定を行った。そのため、Gemのバージョン指定を管理している「Gemfile.lock」というファイルを更新するために「bundle update」を行う。
bundle update
bundle updateを行うことによってgemfileに記述した内容をgemfile.lockに反映させることができる。
「pictweet/Gemfile.lock」というファイルを更新。
1 2 |
$ bundle update
# Gemfileを更新する
|