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」の中から「bundler」の表記をすばやく見つけるために、以下の操作を実行します。
①「Ctrl」キー と「F」キーを同時押しで検索ウィンドウを開く
②検索ウィンドウに「bundler」と入力する
③ ②の入力後、「Enter」キーを押す
上記の①~③の操作実行後、「bundler」が表示されている箇所へと自動的に移動し、ハイライトされている「bundler」と、その横に【(>= 1.3.0, < 2.0)】というバージョンが明示されているのを見つけることができます。
つまり、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のバージョンは「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」のインストールに成功しました。
ただし、現時点では、jrubyへインストール済のbundlerは最新版(「2.3.15」)と、今インストールした「1.17.3」の2つがあり、「bundle install」の際には、どちらが使われていたか注意する必要があります。
※以下のコマンドを打てば、上記のように現時点でインストール済のbundlerのバージョンリスト(例:2.3.15, 1.17.3)が表示されます。
jruby -S gem list bundler
「bundler 1.17.3」を使ってインストールを試みたいところですが、本日の作業時間がなくなったため、今日はここまでとします。
おわりに
と、ここまで書いたところで、bundlerのバージョンをもっと簡単に知る方法があることがわかりました…。orz
その方法については明日の記事にて載せます。
本日もお疲れ様でした。
次のターンへと続きます。