5日目 Bundler(JRuby)のインストール

昨日の続きです。昨日についてはこちら↓

また、筆者のWindows PCからJRubyで作成したWebアプリをheroku上へデプロイ(展開)するための環境構築の途中でもあります。

上記のページによれば、以下をインストールすることが前提であり、前回までで、1のJDK8と、JRuby 9.1.17.0のインストールは完了しました。

  1. JDK 8(Java 8)

  2. JRuby 9.1.17.0

  3. Bundler

今回は前提条件の最後である3番目のBundlerのインストールについて説明します。

Bundlerについて

Bundlerとは何だろう?と思うかもしれないのですが、Bundlerとは、gem(読み方はジェム。Rubyのライブラリ)を利用する際、他のgemとのバージョンなど、互換性を保つことができるように、自動的に管理してくれるツールのことです。(以下参考)

それで、gemとは何だろう?ともなるかもしれないですが、Rubyにはgemというライブラリがあり、Rubyというプログラミング言語そのものを構成するプログラムだけでなく、Rubyを便利に利用できるように、様々な機能を実現するためのプログラムがあって、それらのプログラムは世界中の人たちで作られています。(JavaやPythonなどもライブラリというものがありますが、それらと同じようなものです。)

ちなみに、Ruby言語で作られた、Webアプリ開発を行うためのRailsという有名なフレームワークがありますが、それもgemの1つであり、Bundlerでバージョンなど管理することができます。

また、Railsというフレームワーク自体が、完成度が高く、Rails用のgemも沢山あったりします。

例えば、railsのgemには私が知らない・使ったことのないものもたくさんありますが、Deviseというログイン機能を実現するgemや、Webのページネーションを実現するKaminariなどがあります。

このように、Ruby自体から見たら、gem(Rails)のgemといったものもあって、たくさんのgemがありますが、それぞれgemを開発する際には、他の特定のバージョンのgemを基準に作る場合が多いです。
例:バージョン2.3のgem1においては、バージョン1.0~1.3までのgem2を基準に動作することを前提に開発する等。

そのため、gemを複数利用する場合に、互いのgem同士で、想定していないバージョンのgemが混ざってしまうと、プログラムを動かす際に、gem同士で連携が取れなくなってしまい、動作不具合が起きることがあります。

そのため、複数のgemを利用するならば、どのgemが、他のどのバージョンのgemを利用しているか明確に把握したうえで、利用する必要があります。それを自動的にやってくれるのが、Bundlerというわけです。
(※実はBundler自体もgemだったりしますが…)

JRubyにおけるBundlerのインストール

前置きが長くなりましたが、今回はRubyではなく、JRubyのインストールです。といっても、JRubyも同様にgemもありますし、Bundlerもあります。
ただし、Bundlerをインストールする際のコマンドがRubyとJRubyでちょっとだけ異なります。

例えば、RubyでBundlerをインストールする際には、

gem install bundler

というコマンドで実行可能ですが、

jruby -S gem install bundler

という、先頭に「jruby -S」を付けてコマンドを入力します。「jruby -S」を付けることによって、PCは JRuby を対象にプログラムを実行すると明確に理解して動作することができます。

PCの環境によっては例えば、 JRuby のみインストールしている場合、

gem install bundler

は、JRubyしかないので、JRubyを対象にプログラムを実行しますが、RubyとJRubyの2つが既にインストールされている場合、PCの設定によっては、Rubyを対象にプログラムを実行する場合がありますし、JRubyを対象にプログラムを実行する場合があって、混ざってややこしくなるかと思います。(通常は、Rubyを優先してプログラムを実行していく場合が多いと思いますが。)

jruby -S gem install bundler

ですが、上記の「jruby -S」を付けたコマンドならば、必ずJRubyを対象にっプログラムを実行します。
※再度、以下にherokuのリンクを載せますが、「Install Bundler. To do this, open a command prompt and type: jruby -S gem install bundler.」という英文にもあるように、「jruby -S gem install bundler」を入力すれば良いですし。

実際のインストール時の様子

筆者のPC(Windows 10)にて、実際にインストールしてみますね。まず、コマンドプロンプトを起動します。コマンドプロンプトの起動方法については、以下の前回の記事の中にある、「3. JRuby 9.1.17の動作確認」という見出しをご参考ください。

コマンドプロンプトを立ち上げたら、以下のように「jruby -S gem install bundler」というコマンドを入力します。

「jruby -S gem install bundler」コマンド入力時

コマンドを入力してEnterキーを押すと、しばらく待つと、コマンドプロンプトに、「bundler」のインストールが成功した旨のメッセージが表示されますが、ほぼ同時に「このアプリの機能のいくつかがWindows Defenderファイアウォールでブロックされています」というメッセージのポップアップ画面が出現する場合があります。(以下の①と②が例です。)

左側:コマンドプロンプト、右側:ポップアップ画面

もし、①だけでなく、②のポップアップ画面が出てきたら、特にネットワーク上のセキュリティに問題がない限り「アクセスを許可する」ボタンをクリックした方が良いと思います。

なぜかというと、①で「jruby –S gem install bundler」を入力してBundlerをインストールする際に、Java(Jruby)がネットワークを利用しようとしますが、ポップアップ画面が指すメッセージは、そのJavaがネットワークを利用しようとする動きをブロックしているということを意味します。

プログラムを正しく動かしたい場合は、なるべくブロックしない方が良いかと思いますので、「アクセスを許可する」ボタンを押して、Javaの動作をブロックしているものを外して、Javaの動作を制限するものをできるだけ無くしていきます。

「アクセスを許可する」ボタンを押したら、bundlerのインストールは完了ですが、念のため、bundlerがインストールされているか確認するため、続けてコマンドプロンプトから、以下のコマンドを入力します。(※ここでも先頭に「jruby -S」を必ず付けます。付けなかったら、Rubyと間違う場合があって混乱することがあります。筆者経験談)

jruby -S gem list bundler

コマンドを入力したら、入力後にメッセージが出て、その中にbundlerのバージョン番号が表示されますが、以下の①,②のように、bundlerのインストール時に表示されたbundlerのインストール番号と一致すれば、インストール成功です!

bundlerのインストール(&バージョン確認)

おわりに

以上でbundlerのインストールは完了です。
たった1つか2つのコマンドを入力するだけなのに、なぜか長くなってしまってすみません…笑

とりあえず、お疲れ様でした。これで、Windows PCからJRubyで作成したWebアプリをheroku上へデプロイ(展開)するための前提条件が整いました。

次のターンではいよいよデプロイ、といきたいところですが、筆者は自分で開発したRailsアプリをheroku上へデプロイしたいと考えているため、実はherokuが公式で示しているデプロイ手順のほかにも、もう少し下準備が要るものがあります。そのため、開発環境を整えていくターンがまだまだ続きます。

長くなりそうな予感しかないですが、引き続きよろしくお願いいたします。
次のターンへ続く。

この記事が気に入ったらサポートをしてみませんか?