しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

JRuby Extension を使って Azure Web Apps に Ruby on Rails アプリケーションをデプロイする

何回か Azure Web Apps に JRuby をインストールして Ruby on Rails アプリケーションを動かす方法について書いてきましたが、このあたりの面倒な手順を全て Site Extension で吸収することが出来たので、今回は完全版っぽく手順を紹介しておきます。

これまでに JRuby をインストールしてきた記事は以下になります。

基本的にデプロイスクリプトをカスタマイズして、JRuby のインストールを同時に行う方法を使いましたが、Site Extension として提供するとデプロイスクリプトのフックを行えるので切り替えました。

とりあえずデプロイの方法を順を追って説明していきます。と言ってもかなり簡単になりました。

Java 8 を有効化

JRuby Extension のインストール前にポータルから Java 8 を有効にしておきます。

デフォルトの Java 7 のままだと実行時にエラーになって動かなくなるので注意。Web Container は何故か必須項目になっているので、とりあえずデフォルトのままにしておきます。

JRuby Extension をインストール

ポータルからもインストール出来ますが、30 秒ぐらいでエラーになってしまうので Kudu からインストールする方が分かりやすいです。

インストールのタイミングで JRuby のダウンロードと展開を行うので 5 分ぐらいかかります。インストール後はサイトの再起動を必ず行っておきます。

再起動をしないと XDT で設定した内容が反映されないので、後で悩むことになります。

アプリケーションをデプロイ

JRuby Extension はデプロイスクリプトのフックを行っているので、Local Git や GitHub などを使ってアプリケーションをデプロイする必要があります。今回は簡単に Local Git を使います。

リポジトリを clone すると、デフォルトのファイルが含まれているので Web.config 以外を削除します。

このリポジトリに Rails アプリケーションを追加するわけですが、JRuby 用に Gemfile を少し修正する必要があるので、予めテンプレ的なリポジトリを用意しておきました。

含まれているファイルを全てリポジトリに追加するだけです。後は git push を叩くとデプロイスクリプトによって bundle install が実行されて、必要な gem がインストールされていきます。

これでアプリケーションの準備完了なので、URL にアクセスするとデフォルトのページが表示されます。

デプロイしたものは空のアプリケーションなので 404 ですが、コントローラなどを追加すると表示されます。

まとめると、手順としては Java 8 を有効化して、JRuby Extension をインストールするだけで、Web Apps で JRuby アプリケーションの実行が出来るようになります。

このリポジトリに置いてある JRuby ARM Template を使うと、Java 8 の設定と JRuby Extension がインストール済みの Web App を簡単に作成可能です。

デプロイスクリプトのフックを使うことで、かなり満足いく出来になったと思います。