JRuby 9.2.11.0でRails5アプリをwarに変換してJavaEEコンテナで運用するまで

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環境を導入する。

Windows版JRuby 9.2.11.0環境にRails 6.0.2.2を導入する


今回は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コンテナで運用することはできる。

参考文献)

JRuby徹底入門 ISBN 9784881666456

[Rails]production環境で動かす

GitHub – jruby/warbler: Warbler chirpily constructs .war files of your Ruby applications.

 

 

“JRuby 9.2.11.0でRails5アプリをwarに変換してJavaEEコンテナで運用するまで” への 1 件のフィードバック

  1. 上記の手順で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は深いなぁ。。。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です