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

おはようございます。昨日の続きです。(昨日の記事はこちら↓)

毎日1ターン(1回)記事を書いて、ちょうど一週間が経ちました。
いつか毎日記事を書いて、30ターン(1か月)、100ターン(3か月以上)、365ターン(1年:365日)をやってみたいと思いつき、先週ふらっと書き始めましたが、意外と続くものなのだなあと思いました。

最近早朝に起きることが多くなったので、その時間を使って開発作業に取り組みつつも、その作業の様子をnoteに記録しております。成功も失敗も含めて、書けるだけどこまでも書いてみます。

はじめに

今回は、Railsでアプリの雛形を作って、herokuへあげられるように準備しようと思います。
そのため、以前に、JRuby 9.1.17のインストールを行ないましたので、そのJRubyからRailsをインストールし、アプリの雛形を作っていきます。(以下の4ターン目の記事にて作業の様子を記録)

なお、Railsとは言っても、RubyによるRuby on  Railsではなく、JRubyによるJRuby on Railsとなっており、頭に「J」が付いております。(JRubyについては以下の過去の記事にて、少しだけ説明しています。)

クラウドプラットフォーム(Paas:Platform as a service)であるherokuへ、Windowsを使って、Railsで作ったアプリをデプロイ(展開)するには、JRuby 9.1.17が前提条件として必要であるそうですので、JRuby on Railsを使うことになりました。

前置きが長くなりましたが、次から手順を紹介します。

1. jruby on railsのインストール…失敗。

まずはコマンドプロンプトを立ち上げます。

Windows 10 の場合、以下の図のように、デスクトップ画面の左下にある検索バーのところに、「コマンドプロンプト」と入力してください。
すると、最も一致する検索結果として「コマンドプロンプト」が出てくるので、それをクリックします。

コマンドプロンプトの起動方法例

すると、コマンドプロンプトが起動されて、以下のような画面が出てきます。

コマンドプロンプト起動

そこで、その画面にて以下のコマンドを入力します。

jruby -S gem install rails

Rubyではなく、JRubyを使うので、先頭に「jruby -S」を付けてRailのインストールコマンドを実行します。これだけでインストールできるはずでしたが…

インストール失敗(1回目)

インストールに失敗しました orz…

2. インストールエラーの原因を探る。

気をすぐに取り直して、エラーが起きた箇所を拡大してみてみます。

1回目失敗時のエラーメッセージ

どうやら、Railsに必要なgemの一つである「activesupport」について、Rubyが2.7.0以上であることが必要だそうです。

JRubyが9.1.17だから大丈夫では?と思いの方もいるかもしれませんが、頭に「J」が付いていないほうのRubyと、頭に「J」が付いているほうのJRubyは異なり、そして、そのバージョンも異なります。そのため、今回の場合はRubyのバージョンが2.7.0以上であるかどうか確認する必要があります。

RubyとJRubyが異なるものだったとしたならば、そもそも動かないんじゃ?とも思うかもしれませんが、JRubyはバージョンごとに、Rubyのある特定のバージョンとも対応しており、JRubyのバージョンがわかれば、Rubyのバージョンもわかります。

JRubyのバージョンと、そのバージョンに対応するRubyのバージョンの簡単な確認方法ですが、それにはまず、先ほどのコマンドプロンプトにて、Railsのエラーが出た直後に、以下のコマンドを入力します。

jruby -v

そしたら、以下のように、JRubyのバージョンとそのバージョンに対応するRubyのバージョンが同時に表示されます。

「jruby -v」コマンド入力時

少し見づらいかもしれませんが、「jruby -v」と入力した後に、
jruby 9.1.17.0 (2.3.3)
というのが先頭に出ているのが、見えているかなと思います。

この9.1.17.0という数字はJRubyのバージョンですが、そのあとのカッコ内の2.3.3という数字はRubyのバージョンであり、JRuby 9.1.17.0は、Rubyの2.3.3というバージョンと対応している、という意味になります。

エラーが表示されていた時、Rubyのバージョンは2.7.0以上であることが求められていたので、Rubyの2.3.3バージョンと対応しているJRuby 9.1.17.0では、そもそもインストールできないという意味になります。

3. インストールするRailsそのもののバージョンを変えてみるのはどうだろうか?

じゃあどうするんだ、というツッコミがあると思いますが笑
ここであきらめずに粘って、何か他に解決方法がないか探してみます。

今回はバージョンに関する問題で、インストールしようとするRailsでは、Rubyがある程度新しいバージョン以上であることが求められていたため、
「では、インストールしようとするRailsそのもののバージョンを古いほうに置き換えてみたらどうだろうか?」
と、視点を置き換えてみます。

Railsそのものバージョンを古いものにすることによって、動作に求められるRubyのバージョンを下げることができると考えたため。

調べてみると、以下の記事が参考になりました。

どうやら上の記事の説明によれば、単に「gem install rails」と指定するだけだと、自動的にRailsの最新のバージョンをインストールしてしまうそうです。ですが、「gem install rails -v 〇.×.△」というように、〇.×.△のところにバージョンを指定すれば、指定したバージョンのRailsをインストールできるようですので、以下のように先頭に「jruby -S」を付けておいて、バージョンも指定できればよさそうです。

jruby -S gem install rails -v (バージョン番号)

ということで、Railsの今までのバージョンを調べてみます。Railsの今までのバージョンの中から、Ruby 2.3.3以上(JRuby 9.1.17.0)で動作できるものを探します。

Railsの今までのバージョンをどうやって調べるか、ネットから探してみたら、以下のページが見つかりました。

どうやら、以下の3つのコマンドが、バージョンを確認する方法になりそうです。

# 安定バージョン全部
gem list rails -rea
# 開発版を含む全部
gem list rails -rea --pre
# 最新安定版
gem list rails -re

そこで、先頭に「jruby -S」を付けて、railsにおける今までの安定バージョンを以下のコマンドで調べてみます。

jruby -S gem list rails -rea

コマンドプロンプト上から上のコマンドを入力すると、以下のように表示されました。

「jruby -S gem list rails -rea」コマンド入力後

コマンド入力後、「rails(7.0.3、~」というようにたくさんのバージョンがでましたが、これだと、どのバージョンを選んでいいかわからないですね…笑

4. herokuのサンプルを参考にしてみる。

そこで、herokuで公開されているサンプルを参考にしてみます。元々、heroku上へrailsで開発したアプリをデプロイしたいと思ったのがきっかけで、そのherokuでは以下のページのように、前提条件として「JRuby 9.1.17.0」インストールが必要、とされています。

herokuが「jruby 9.1.17.0」でできると言っているならば、必ず、その「jruby 9.1.17.0」と上手く対応できているRailsのバージョンもあるはずです。そこで、そのRailsのバージョンをherokuの公式ホームページに載っていないか探してみます。

すると、先ほどの前提条件のページから、2つほど先に進んだところ(以下ページ)にて、

以下の気になるコマンドを見つけました。

git clone https://github.com/heroku/jruby-getting-started.git
cd jruby-getting-started

上記のコマンドのうち、「git clone ~」というコマンドがありますが、この「git clone」の後に続くURLは、実は、herokuで公開しているJRuby on Railsのサンプルアプリをダウンロードできるデータ先です。

gitというのはソースコードのバージョン管理システムの一種です。
そして、「git clone (URL)」というのは、gitで管理中のソースコードについて、URLにあるデータと全く同じものを、自分自身のPCへ複製(clone)するという意味です。

そのため、「git clone (URL)」のURLにあるデータこそが、heroku上で問題なく動作できているRailsであり、そのRailsのバージョンこそが、今回探しているバージョンで、そのバージョンならば、「jruby 9.1.17.0」と上手く対応することができるはず、と当たりを付けることができます。

というわけで、先ほどのコマンド、

git clone https://github.com/heroku/jruby-getting-started.git

「git clone」の後の「https://github.com/heroku/jruby-getting-started.git」について、そのままブラウザの検索バーへ入れてみます。

そしたら、GitHubにてherokuが公開しているRailsアプリのページに遷移されます。(以下にもリンクを貼りますね。)

Githubとは、Gitを用いて世界中の開発者がソースコードなど公開しているプラットフォームですが、上記のページの中から、heroku上で動くことができるサンプルアプリのRailsバージョンを探すことが可能です。

どうやって探すかというと、Railsの中にあるGemfileを参照します。Gemfileとは、BundlerがRailsアプリを動かす際に、その関連する複数のGemをまとめて管理するためのもので、Railsのデータの中に入っています。
(gemとBundlerについては以前の記事にて記載したことがあります。↓以下参照)

そこで、Gemfileを、先ほどのGithubのページから探そうと思いますが、Gitfilleは必ず、Railsで作ったアプリデータのルートディレクトリにあり、以下のように「Gemfile」という表示があります。

「Gemfile」の場所

そこで、その「Gemfile」と表示されている箇所をクリックします。

「Gemfile」クリック

すると、以下のように「Gemfile」内の記載内容が表示されますが、その中にRailsのバージョン記載もあり、小さくて見づらいかもしれませんが、「4.2.4」という表記があります。

「Gemfile」記載内容とRailsのバージョン記載場所

これで、heroku上で問題なく動作できているRailsのバージョン(「jruby 9.1.17.0」と上手く対応できるバージョン)が「4.2.4」であることがわかりました。

参考:

5. jruby on railsのインストールの再挑戦…果たして!?

上手く動作できそうなバージョンが「4.2.4」であることがわかったので、今度は、Railsのインストール時に「4.2.4」を指定してやってみます。

コマンドを以下のようにバージョンを指定して、コマンドプロンプト上から入力し直してみます。

jruby -S gem install rails -v 4.2.4

今度は成功するといいなと思いつつ、しばらく待ってみると…

インストール失敗(2回目)

またもや失敗…。
最初の失敗である、「activesupport」について、Rubyが2.7.0以上であることが必要である旨のエラーは無事回避できたようですが、今度は、

2回目失敗時のエラーメッセージ

「racc」について、Rubyが2.5以上であることが求められているようです。
さて、どうしたものか?

本日はここまで

もう少し粘ろうかと思いましたが、時間的に余裕がなくなってきたため、本日はここまでにします。明日また再挑戦します。

次のターンへ続きます。

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