Ruby
Rails

[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の略

②どう使うの?
③注意点