11日目 遠回りしながらRailsインストール[JRuby 9.1.17]④

おはようございます。
Railsアプリの雛形作成の挑戦の続きです。
昨日の記事はこちらで、JRuby 9.1.17の状態で、Railsをインストールしているところでかなり詰まっている感じですが、諦めずに粘っているところです。

前回までのおさらい

まず、herokuへデプロイするための前提条件として、
1. JDK 8インストール
2. JRuby 9.1.17インストール
3. bundlerのインストール
というのがあったので、その通りまずは自分のPCに上記の1と2をインストールしていました。

そして、Railsをインストールしようとしたものの何度か失敗したため、試行錯誤しながら原因を1つ1つ確かめつつ、何とかインストールするための道を探しているところです。

前回は、「JRubyのバージョンを9.1.17にキープする」方針で、bundlerというgemを上手く使いながら、Railsを含む関連するgemについてぞれぞれバージョンを明示して指定しながらインストールしようとしていました。

ところが、以下のエラーが表示されていて、原因を調べてみると、「jruby 9.1.17.0」に対して、「bundler 2.3.15」という、jrubyに比べてbundlerは新しすぎるものを指定しているということがわかりました。
「NameError: uninitialized constant Errno::ENOTSUP
Did you mean? Errno::ENOTEMPTY」

そこで、今回はbundlerのバージョンを「jruby 9.1.17.0」に合ったものとなるように指定し直して、インストールを試みます。

bundlerのバージョンはいつのものを指定する?

問題となるのは、「jruby 9.1.17.0」に合うバージョンがいくつになるのか?ということですが、ここでも手掛かりとなるのは、Github上で公開しているJRuby on Railsのサンプルアプリ(heroku公式)です。

Railsのバージョンを指定してインストールするときに、「jruby 9.1.17.0」に合うものを探すときも上記のサンプルアプリの中にある「Gemfile」の中を見て、「Rails 4.2.4」と当たりを付けることができました。(詳しくは以下の記事)

bundlerのバージョンを探すときも、heroku公式のJRuby on Railsのサンプルアプリの中から、bundlerのバージョンを指定しているものがないか探してみます。

実は、bundlerのバージョンを指定しているものは、「Gemfile」の中にはありませんが、「Gemfile.lock」ならば、bundlerのバージョンに関する記載を見つけることができます。(「Gemfile」と「Gemfile.lock」については詳しくは以下の記事にて解説があります。)

まず、先ほども載せましたが、以下にGithub上で公開されている、heroku公式のJRuby on Railsのサンプルアプリページへアクセスします。

すると、ページの中から「Gemfile.lock」という行を見つけられるかと思うので、その名前のところへマウスカーソルを持っていき、クリックします。

Gemfile.lockの場所

すると、「Gemfile.lock」の内容がわかるページへと遷移するので、「Gemfile.lock」の中から「bundler」の表記をすばやく見つけるために、以下の操作を実行します。
①「Ctrl」キー と「F」キーを同時押しで検索ウィンドウを開く
②検索ウィンドウに「bundler」と入力する
③ ②の入力後、「Enter」キーを押す

「Gemfile.lock」表示ページ

上記の①~③の操作実行後、「bundler」が表示されている箇所へと自動的に移動し、ハイライトされている「bundler」と、その横に【(>= 1.3.0, < 2.0)】というバージョンが明示されているのを見つけることができます。

「bundler」とそのバージョンの明示箇所

つまり、bundlerは「1.3.0」以上、「2.0」未満なら大丈夫、ということです。これでbundlerで上手く動きそうなバージョンの範囲がわかりました。(1.3 <= x < 2.0、xはバージョン番号)

一応、bunlerのバージョンを選ぶ際にはなるべく新しいものが良いと思うので、bundlerは「1.3.0」以上、「2.0」未満の中でも、一番新しいものを探してみます。

bundlerのバージョンのリストを知る方法は主に2種類ありますが、1つは以下のページへアクセスすることです。

もう1つは、コマンドプロンプトから以下のコマンドを打つことです。(WindowsにJRubyがインストール済の場合)

jruby -S gem search ^bundler$ --all

実際に以下のコマンドを打ってみると、色々とbundlerのバージョンのリストが出てきますが、そのbundlerのバージョンの中から「2.0」未満かつ「1.3」以上で、一番新しいものが「1.17.3」だということがわかります。

bundlerの全てのバージョン表示

これで、bundlerのバージョンは「1.17.3」ということで決めることができました。

bundlerのバージョンを指定して再インストール

bundlerのバージョンを指定してインストールする方法は以下の通りです。

「gem install bundler」の際に、「-v」コマンドを入れればよいそうですので、jrubyを対象にすることも忘れずに「jruby -S」を先頭に付けて、以下のコマンドをコマンドプロンプトへ入力してみます。

jruby -S gem install bundler -v 1.17.3

すると、以下のように無事、「bundler 1.17.3」のインストールに成功しました。

「bundler 1.17.3」のインストール

ただし、現時点では、jrubyへインストール済のbundlerは最新版(「2.3.15」)と、今インストールした「1.17.3」の2つがあり、「bundle install」の際には、どちらが使われていたか注意する必要があります。

インストール済のbundlerのバージョンリスト

※以下のコマンドを打てば、上記のように現時点でインストール済のbundlerのバージョンリスト(例:2.3.15, 1.17.3)が表示されます。

jruby -S gem list bundler

「bundler 1.17.3」を使ってインストールを試みたいところですが、本日の作業時間がなくなったため、今日はここまでとします。

おわりに

と、ここまで書いたところで、bundlerのバージョンをもっと簡単に知る方法があることがわかりました…。orz
その方法については明日の記事にて載せます。

本日もお疲れ様でした。
次のターンへと続きます。

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