Ruby Gem の基本

ここ数週間 Ruby Gems を使用していて、素晴らしいのですが、自分のアプリケーションに追加したときに、フードの下で何が起こっているのかよく分かりませんでした。 そこで、このブログ投稿は、gems がどのように機能するかを私が理解するのを助け、できれば皆さんの役にも立ちたいと思います。

Ruby gem は、パッケージになった Ruby コードで、あなたのアプリケーションに追加することができます。 これは、同様の問題を解決するために他の人が書いたコードを使用することで、時間を節約することができます。 たとえば、あるテキストの色を変更したい場合、colorize gem をインストールして使用することができます。

Sinatraはgem、Rackはgem、そしてRailsもgemであることを知り、驚きました。 すべてのパブリックな gem は RubyGems.org を通じて公開されています。 ここで人々が貢献し、コミュニティと共有することができます。

まずはgemをインストールしましょう

gemを選んで、インストールしましょう。 私は、渡した文字列の色を変更する colorize gem をアプリケーションに追加することにしました。 gem install gem_nameを実行すると、gemがコンピュータにダウンロードされ、アプリケーションで利用できるようになります。 インストールした後、そのgemはどこにあるのでしょうか?

gem install colorize

gem をコードの中で使用するには、ファイルの先頭で require ‘gem_name’ と入力して gem を必要としなければならないでしょう。

require ‘colorize’

これで、gem がインストールされて要求されたので、それを使用することができます。 通常、gem の GitHub リポに行くと、その機能と使用方法に関する重要な情報が記載されています。

https://github.com/fazibear/colorize

使ってみよう!

Readmeを読んだので、テキストに色を付けてみたいと思います。 私のコードでは、文字列に対して .colorze(:color) を呼び出して、3 つの異なる色を追加しました。

コードを実行する

すばらしい! いい感じでしょう? gem をインストールし、動作しているように見えますが、多くの gem を必要とする大きなアプリケーションの場合はどうでしょうか。 gem install を呼び出して、それぞれの gem を要求するのは大変な作業のように思えます。

Bundler

Bundler は私たちの生活をずっと楽にしてくれます。 bundler とは何でしょうか。 もちろん、gem です! 各 gem を追跡し、あなたのアプリケーションで使用する必要がある gem とバージョンを正確にインストールします。 bundler を使うには、プロジェクトのディレクトリに Gemfile が必要で、その中に好きなだけ gem を列挙することができます。 そのためには、Gemfile を開いて gem ‘gem_name’ を追加するだけです。

Gemfile に追加したら、ターミナルで bundle install を必ず実行してください。 これで、Gemfile に記載されているすべての gems とその依存関係がインストールされます。 これでだいぶ楽になりましたね。 素晴らしいことに、Ruby 2.6 以降では bundler が自動的に含まれているので、自分でインストールする必要はありません。

ファイルの先頭に require ‘gem_file’ を追加する必要があるようですが、これもファイルがたくさんある場合は大変な作業になります。 bundler はこのことも考えていたことがわかりました。 .rbファイルの先頭にrequire ‘bundler’を追加して、Bunlder.require(:default)と書けばいいのです。 これは、gemfile にある各 gem に対して require ‘gem_name’ を呼び出しています。

Bundler.require(:default)

一度 bundle install を実行したら、追加しなかった多くの gems がインストールされていることに気づくかも知れません。 なぜでしょうか。 多くの gems は、他の gems を一緒にインストールする必要があります。 例えば、rails は他の多くの gem を必要とし、それらの gem は他の gem を必要とするなどです。 Bundler は、インストールされるすべての gem のバージョンが互いに互換性があることを確認します。

各 gem の正しいバージョンを見つけた後、それらのバージョンを Gemfile.lock と呼ばれる別のファイルに記録します。 これにより、このアプリケーションを実行する必要があるすべてのマシンにまったく同じバージョンをインストールすることが可能になります。

A Gemfile.lock file

私の Gemfile.lock で lolize が paint gem とそれが使用できるバージョンを必要としていることがわかると思います。 そのため、bundler はその gem と正しいバージョンを取得します。 これは便利だと思いませんか? bundler に感謝します!

以上です。 gem と bundler の基本を理解するのに役立ったでしょうか。 使える gem はたくさんあるので、ここで検索してみてください。 https://rubygems.org/.

コメントを残す

メールアドレスが公開されることはありません。