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.