Rubyの初心者エンジニアのためのGemfileとsourceの関係性を理解しよう

pc-screen Ruby

自分は基本的にどの言語であっても、コード補完がないと生きていけない人間です。
大概のPJでは、solargraphを入れています。

今回は、生のRubyでただsolargraphを入れたかっただけなのに、
なぜかインストールできなかったので、調査してみました。

解決策

Gemfileの先頭にsource "https://rubygems.org";を記述する

source "https://rubygems.org"

gem "solargraph"

何がおきたのか

Gemfileにsolargraphとだけ書けば、いれられるでしょ!
と思って、

gem "solargraph"

とだけ、Gemfileに書いてbundle installを実行してみました。

すると

Could not find gem 'solargraph' in locally installed gems.

となりました。

え、なんでやと思って過去のPJのGemfileを調べたところ、

source "https://rubygems.org"

だけが異なることがわかりました。

上記を記述してみると、あら不思議普通にインストールできました。
これでめでたしめでたしとするのも気持ち悪いので、

source "https://rubygems.org"

について調べてみることにします。

source "https://rubygems.org"とは

まずsourceについて調べてみます。
sourceは、グローバルソースと呼ばれているようです。
1個のGemfileにつき、グローバルソースは1つだけ指定できます。

次に"https://rubygems.org"ですが、
こちらは、Gemのホスティングサービスですね。
Topページにがっつり説明が書いてあります。

RubyGems.orgはRubyコミュニティのGemのホスティングサービスです。

引用:https://rubygems.org/

なので、source "https://rubygems.org"とは、

"https://rubygems.org/"をグローバルソースにするという意味

になるようです。

solargraphは、https://rubygems.org/上にあるので、
sourceを指定してあげないとどこからとってきていいかわからないという感じなんですね。

まとめ

Gemfileを素で作るときは、

source "https://rubygems.org/"

が必要でなぜなのかも理解することができました。

エンジニアの三大美徳の中に"怠惰"がありますが、
こういう仕組みや意味を調べるところは怠惰であってはいけませんね。

コメント

タイトルとURLをコピーしました