Edited at

[Ruby][初心者向け]Ruby開発環境周りのツールの名称や役割について


◆はじめに

Ruby on Railsを学習し始めたのでメモ

〇参考になるかも知れない対象---------------

初学者

〇注意点---------------------------------

MacかWindowsで使用するツールが異なります。

が、ここではごちゃ混ぜで書いてます。

※いずれちゃんと分けて書く。


◆RubyGems


①何それ?

パッケージ管理ツールのこと


②何ができる?

gem形式のパッケージのダウンロードを行なったりインストールすることができる


③どう使うの?

(win)コマンドプロンプト

(mac)ターミナル

でコマンドとして使用する。

例)gemコマンドを使用してRailsをインストール

$ gem install rails


④備考

RubyGemsはRubyインストール時に標準でついてくる。

※Ruby1.9以上


◆gem


①何それ?

Rubyのパッケージ、またはライブラリの呼び名


②何ができるの?

gemにもよるが、

・パッケージが管理できる「bundler」 ※RubyGemとの違いは後述

・フレームワークの「Rails」

・SQLiteをRailsから利用するために必要な「sqlite3」

上記全てgem形式のパッケージという位置づけになる


③どう使うの?

「bundler」を例に出して説明すると、、、、

後述します。。


④注意点

そのgemがプロジェクト毎に適用されているのか、

それともOSにインストールされたRuby自体にgemが適用されているのか。

これらは後々問題になったりするので、上記の意識を持っていることは大切かも。


◆Bundler


①何それ?

gem形式のパッケージであり、

「gemの依存関係とバージョンを管理するためのツール」である


②何ができる?

・プロジェクト毎にgemをインストールできる

・依存関係の解消 ※下記参考

参考:https://www.sejuku.net/blog/19426


例えばAというgemがあって、Aを使うにはBというgemを使う必要がある、そのgemを使うにはCというgemを….

となっている時、AはBに依存しており、BはCに依存しているということになります。

そうなった時、一つ一つのgemをインストールするのって面倒ですよね?

しかし、bundlerを使えば、依存関係のあるgemを一括でインストールしてくれます!

一括でインストールしたgemはすべて、依存関係が解決された状態で、インストールされています。



③どう使うの?

コマンドライン、ターミナルからコマンドを叩いて使用する。

コマンドはいくつかありますが、

依存関係の説明のため、以下の二つを紹介

・「bundle init」

・「bundle install」

流れとしては、

①「bundle init」でGemFile(インストール先が記述されたファイル)を作成

②「bundle install」で①で作成したGemFileを基にインストールを行う

すると、、

③1つのgemしか記載していないのにも関わらず、必要な他のgemを勝手にインストールしてくれている…!?となる

・bundle init

$ bundle init

Writing new Gemfile to /Users/shun/RubySample/Gemfile


GemFile

# frozen_string_literal: true

source "https://rubygems.org" ←インストール先
# gem "rails"

$bundle install

Fetching gem metadata from https://rubygems.org/……….

Fetching version metadata from https://rubygems.org/..
Fetching dependency metadata from https://rubygems.org/.
Resolving dependencies…
Using rake 12.0.0
Using concurrent-ruby 1.0.5
Using i18n 0.8.1
Using minitest 5.10.1
…省略
Using actionmailer 5.0.2
Using railties 5.0.2
Using sprockets-rails 3.2.0
Using rails 5.0.2
Bundle complete! 1 Gemfile dependency, 38 gems now installed.
Use bundle show [gemname] to see where a bundled gem is installed.

あるgemに依存関係があるgemがずらずらとインストールされています。

また、プロジェクトごとに違うgemを入れる場合や、プロジェクトごとに違うバージョンのgemを入れる場合はこう

$ bundle install --path vendor/bundle

「–path vendor/bundle」をつけると、gemを現在のフォルダの下のvendor/bundleにインストールしてくれる。ありがたい(^-^)


④注意点


◆rvm


①何それ?

Ruby Version Managerの略


②どう使うの?


③注意点