GAEでJRubyのSinatraを動かすまでのメモ
業務でGoogleAppEngineを使うかもしれないので、
最近いろいろ調査してました
特に、GAE/JRuby周りを中心に
一応、私はJava屋でもあるので、
GAEが正式サポートしているJavaでコードを書いてしまってもいいのですが、
Rubyの簡便さに慣れるともう戻れないのです(*ノ∀ノ)
というわけで、GAEのJVMの上で動くJRubyの調査をしていたのですが、
Railsだと相当面倒というか、情報が古くてほとんど断念
その代わり、「Sinatra」という軽量フレームワーク*1なら動作を確認できたので、
とりあえずそれを動かすまでの手順をメモ...φ(・ω・`)
参考にしたのはこちら(´・ω・)っ
appengine-jrubyで簡単GAE/JRuby開発 - しばそんノート
ほとんどこのままやっていけばOKですが、
微妙に手順が変わっているところがあったのです
Sinatraを使わないHello World
0.準備
2. config.ru を作成
先ほどのサイトを参考に、IDとVERだけきっちり修正
3. 開発サーバで動作確認
dev_appserver.rb [--address=0.0.0.0] [--port=xxxx] . ※0.0.0.0を指定しないと外部からアクセスできない ※portは任意(現Verでは8080がデフォルト)
初回実行時、関連するgemのダウンロードと配置が行われます
rubyのgemでインストールしてあっても、GAE/JRubyでは動きません
(デプロイされないため)
・・・そこまではいいのですが、
問題はこれをローカル権限で実行できないことでして
(ここで詰まった)
というのも、私はgemをroot権限で実行しているためか、
gem以下の dev_appserver.rb の権限がrootになっていたのですΣ(・ω・ノ)ノ
これの権限をいちいち修正するのも面倒なので、そのままrootで起動しました
何かうまい手はないかな・・・
4. GAEにデプロイ
appcfg.rb update .
これだけでデプロイが開始され、
初回のみアカウント情報を要求されます
次回からはコマンドだけです
SinatraでHello World
ここまでの実行をやっている、という前提で
1. Sinatraアプリを作る
さっきのサイトを参考に
私はほとんどコピペで試しました
この段階で、普通のSinatraアプリとしてテストしておくといいと思います
「config.ru」とアプリのファイルを同じディレクトリに置いて、
「ruby xxxx.rb」するだけです
おそらくデフォルトでWEBRickが起動し、
アクセスできるはずです
つまり、たった2ファイルで動いてしまうという・・・(; д ) ゚ ゚
2. Gemfileの書き換え
詰まったのがここです
先ほどのサイトでは、appcfgを経由してgem installしているのですが、
最新のgoogle-appengine-0.0.6では手順が変わっています
おそらく、作成したアプリケーションのディレクトリに、
「Gemfile」というファイルがあるはずです
これに以下を追記します
(前略) gem "appengine-rack" # これはおそらくある gem "sinatra" # コメントで存在するかも?
要は、Gemfileにアプリで使うgemを指定すればいいのです(`・ω・´) b
最初アプリが起動しなくて、いろいろ試行錯誤した結果、
「#gem "sinatra"」という行が追加されていたので、
何かのタイミングで書き込まれたのかもしれません
3. 動作確認
dev_appserverでサーバを起動します
おそらくはSinatraが実行環境にインストールされます