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のインストールコマンドを実行します。これだけでインストールできるはずでしたが…
インストールに失敗しました orz…
2. インストールエラーの原因を探る。
気をすぐに取り直して、エラーが起きた箇所を拡大してみてみます。
どうやら、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 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
コマンドプロンプト上から上のコマンドを入力すると、以下のように表示されました。
コマンド入力後、「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」内の記載内容が表示されますが、その中にRailsのバージョン記載もあり、小さくて見づらいかもしれませんが、「4.2.4」という表記があります。
これで、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
今度は成功するといいなと思いつつ、しばらく待ってみると…
またもや失敗…。
最初の失敗である、「activesupport」について、Rubyが2.7.0以上であることが必要である旨のエラーは無事回避できたようですが、今度は、
「racc」について、Rubyが2.5以上であることが求められているようです。
さて、どうしたものか?
本日はここまで
もう少し粘ろうかと思いましたが、時間的に余裕がなくなってきたため、本日はここまでにします。明日また再挑戦します。
次のターンへ続きます。