kurukuru-papaのブログ

主に、ソフトウェア開発に関連したメモを書き溜めたいと思います。

GAE/JRuby/SinatraでHello World

前回のエントリーに引き続きGAE/JRubyで、Webアプリを作ってみます。今度はSinatraを使ってみました。

試行錯誤作成しているので冗長な部分や間違いもあるかも知れませんが、一応動くものが出来たので、メモしておきます。

Sinatraって何?
  • 軽量フレームワーク。小・中規模のWebアプリ制作に向いているらしい。
  • データベース用のライブラリは入っていないので、別途準備する必要があるらしい。
  • Rack上で動作する
  • ・・・あまり調べていません・・・
手順概要

google-appengineがインストール済みの状態からの手順です。

  1. スケルトン作成
  2. 設定ファイル(Gemfile)追記
  3. SinatraHello Worldスクリプトを作成
  4. ローカルPC環境で動作確認
  5. GAEへデプロイ
  6. GAE環境で動作確認
手順詳細

Webアプリ用ディレクトリを作成し、スケルトンを作成します。これで、必要なファイルやライブラリが色々構築されました。
※「appcfg.rb」はgoogle-appengineのコマンドです。

> mkdir sinatra_test
> cd sinatra_test
> appcfg.rb generate_app .

自動生成された設定ファイル(Gemfile)の下部に次の1行を追記し、Sinatraライブラリを使用出来るようにします。これにより、GAEへのデプロイ時にも、Sinatraライブラリが追加されることになります。

gem "sinatra"

自動生成されたconfig.ruファイルは、Rackのみで動作するように設定されているので、Sinatraを使った記述に変更します。「application-id」とバージョンの「1」は、自分のGAE環境に応じて適宜変更しました。

require 'appengine-rack'
require 'rubygems'
require 'sinatra'

get '/' do
'Hello Sinatra!'
end

AppEngine::Rack.configure_app(
:application => 'application-id',
:precompilation_enabled => true,
:version => '1'
)
run Sinatra::Application

これでもう動作するようになりました。

ローカルPC環境で動作確認してみます。私の環境では、デフォルトの8080ポートは使用中のため3000ポートを使用しました。

>dev_appserver.rb --port=3000 .

ブラウザから、次のURLでアクセスし、「Hello Sinatra!」と表示されることを確認できました。

http://localhost:3000/

では、GAEへデプロイします。

>appcfg.rb update .

ブラウザから、次のURLでアクセスし、「Hello Sinatra!」と表示されることを確認できました。「application-id」は適宜読み替えます。

http://application-id.appspot.com/
動作環境
  • OS : Windows 7
  • Ruby : ActiveRuby 1.8.7 (2010-01-10 patchlevel 249) [i386-mswin32]
  • google-appengine : Version 0.0.9