Windows版JRuby 9.2.11.0でRails5アプリをwarに変換してJavaEEコンテナで運用するまで
タイトルの通りで、Windows版JRuby 9.2.11.0上でRails5のWebアプリを開発して、warファイルに変換してから、JavaEEコンテナ上で実行するところまでの手順を解説する。
使用した各ソフトウェアのバージョンは、
・JRuby 9.2.11.0 (Windows版)
・Rails 5.0.1
・warbler 2.05
・tomcat 8.5.1.6
である。
JRuby 9.2.11.0とRails5.0.1の導入
以下の記事を参考にして、JRuby(9.2.11.0)にRails5環境を導入していく。なお、以下の記事はRails6環境の導入記事だが、今回はwarblerとの関係でRails5環境を導入する。
今回はrails5を導入するため、railsの導入部分を以下のコマンドで実行する。
gem install rails -v 5.0.1
※本稿執筆時点でのRails5の最新版は”5.2.4.2 “だが、依存しているrubyzipのバージョンが2.3.0では後述するwarblerが動作しないため、rubyzipの1.X系列に依存する5.0.1を使用する。
warlberの導入
warbler2.0.5を以下のコマンドで導入する。
gem install warbler -v 2.0.5
なお、warblerのリリースは2018年5月から停止しているので、最新のRails環境に対応したwarblerのリリースは現状では期待できないだろう。。。
実際に筆者がRails6環境やRails5.2.4.2環境でwarblerを使用したところ、rubyzipのバージョンが2.3.0のため、1.X系列を使用するwarblerは使用できない旨のメッセージが出た。
Railsアプリの実装
以下のコマンドで最小限のRailsアプリを実装する。
Railsプロジェクトの作成。
rails new warsample
コントローラーの作成
cd warsample rails generate controller test index
Railsサーバーの起動
rails s
以下のURLのアクセスしてページが表示されるかを確認する。
http://localhost:3000/test/index
warファイルの生成
以下のコマンドでRailsアプリをwarファイルに変換する。railsプロジェクトのディレクトリで以下のコマンドを実行する
warble
railsプロジェクトのディレクトリにwarsample.warファイルが生成されることを確認する。
JavaEEコンテナへのwarファイルのデプロイ
適当なJavaEEコンテナを使用してwarファイルをデプロイする。
この時、環境変数SECRET_KEY_BASEを設定しておく必要がある。
rake secret XXXXXX(ランダムな文字列が生成される) set SECRET_KEY_BASE=XXXXXX
JavaEEコンテナとして、筆者はapache-tomcat-8.5.16を使用した。tomcatのwebappsディレクトリにwarsample.warを配置して、以下のコマンドを実行する。
cd <tomcatのディレクトリ>/bin catalina run
コンテナが起動したら、以下のURLにアクセスして動作することを確認する。
http://localhost:8080/warsample/test/index
これで、Rails5アプリをJavaEEで運用できることを確認した。
まとめ
JRubyで最小限のRails5アプリを実装して、JavaEEコンテナで運用することはできる。
参考文献)
GitHub – jruby/warbler: Warbler chirpily constructs .war files of your Ruby applications.
上記の手順でRails環境を構築して、rails newすると何故か以下のエラー(警告?)が発生することがあるようだ。
HEADS UP! i18n 1.1 changed fallbacks to exclude default locale. But that may break your application.
この状態でrails -vすると、何故か5.0.7.2 が適用されていた。
gem install railsした直後は5.0.1だったのに。。。
色々試した結果、以下の手順で解決した。
gem uninstall rails
gem uninstall railties
gem uninstall sass-rails
gem uninstall activesupport
してから
gem install rails -v 5.0.1
Rubyは深いなぁ。。。