Warbler で簡単 Sinatra アプリ on GAE
JRuby と AppEngine SDK (Java) はインストールされているものとします。
JRuby は、mac なら macports などで導入できます。
SDK はインストールとか不要で、ダウンロードして解凍するだけで使えるので、はじめの一歩を踏み出しましょう。
Downloads - Google App Engine — Google Developers
追記(2009/08/02 22:12):
08/02 現在、英語ページからダウンロードできる SDK のほうが新しいですが、不安定な可能性があるので日本語ページにある旧バージョンを使ったほうがいいかもしません。
まず、warbler と sinatra を jgem (jruby のgem) でインストールします。
$ jgem install warbler sinatra
hello_world というアプリケーションを作ってみましょう。
$ mkdir hello_world
$ cd hello_world
hello_world フォルダ直下に config.ru と appengine-web.xml というファイルを作成します。
config.ru
require 'lib/app' run Sinatra::Application
appengine-web.xml
<?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <application>(あなたの appid)</application> <version>1</version> <static-files /> <resource-files /> <sessions-enabled>true</sessions-enabled> <system-properties> <property name="jruby.management.enabled" value="false" /> <property name="os.arch" value="" /> <property name="jruby.compile.mode" value="JIT"/> <!-- JIT|FORCE|OFF --> <property name="jruby.compile.fastest" value="true"/> <property name="jruby.compile.frameless" value="true"/> <property name="jruby.compile.positionless" value="true"/> <property name="jruby.compile.threadless" value="false"/> <property name="jruby.compile.fastops" value="false"/> <property name="jruby.compile.fastcase" value="false"/> <property name="jruby.compile.chainsize" value="500"/> <property name="jruby.compile.lazyHandles" value="false"/> <property name="jruby.compile.peephole" value="true"/> </system-properties> </appengine-web-app>
次に、warble の設定ファイルを書きます。
$ mkdir config $ warble config
config/warble.rb というファイルが作成されるので、これを修正します。
Warbler::Config.new do |config| ... config.dirs = %w(lib) config.includes = FileList['appengine-web.xml'] config.gems = ['sinatra'] ... end
メインプログラムを lib/app.rb に書きます。
必要ならば public フォルダや views フォルダも lib 以下に置くと、うまく動きます。
$ mkdir lib
lib/app.rb
require 'rubygems' require 'sinatra' get '/' do 'Hello world!' end
必要 jar ファイルを SDK からコピーして、魔法のコマンド warble で完成します。
開発用サーバで確認しましょう。
$ cp /path/to/gaej_sdk/lib/user/appengine-api-1.0-sdk-1.x.x.jar lib/ $ warble $ /path/to/gaej_sdk/bin/dev_appserver.sh tmp/war
http://localhost:8080 で確認できます。
ちなみに http://localhost:8080/_ah/admin は、ローカル DataStore ビューアです。
アップロード。
$ /path/to/gaej_sdk/bin/appcfg.sh --enable_jar_splitting [email protected] --passin update tmp/war
http://(あなたの appid).appspot.com/ で Hello world。(1 回目の起動は、遅いです)
追記(2009/08/02 22:13):
この記事のやり方よりも、以下のテンプレートを用いた方がよいかもしれません。
jugyo/sinatra_on_gae · GitHub