今日はGoogleAppEngineをRailsで使ってみたいと思います。JavaとかPythonとかマスターする必要はありません。RubyとRailsでいいんです。実は結構前に知ってのたのですが、昨日、1年ぶりくらいに使ってみてやっぱり快適で感動したのでちょっとやり方を公開しておこうと思います。
https://gist.github.com/825451
基本的にここに書いてあることをやっていきます。RVMは使わないでくださいとのことが書いてあります。ちなみに僕の環境はRuby1.8.7でRVMを使わずにやってます。Rails3はちょっとまだ正式にサポートしてないみたいので(調査中)。今回はRails2で行います。
sudo gem install google-appengine
# sudo gem install rails -v "2.3.11" # sudo gem install rails_dm_datastore # sudo gem install activerecord-nulldb-adapter
インストールは無事に終わったのでアプリをつくります。適当なディレクトリをつくって、その中に移動します。
mkdir rails_app; cd rails_app
curl -O http://appengine-jruby.googlecode.com/hg/demos/rails2/rails2311_appengine.rb ruby rails2311_appengine.rb
ちょっとだけ時間がかかります。。
いよいよ開発ができるようになるので、まずはサーバーを起ち上げましょう。
./script/server.sh
ではlocalhost:8080で確認してみましょう!き、来ました。

公開するにはまずGoogleAppEngineのアカウントが必要です。
こちらのページを作りましたので参考にしてください。
RailsといえばScaffoldとかGeneratorが使えるってところが嬉しいとこ。AppEngineでも使えます。
./script/generate scaffold post title:string summary:text body:text -f --skip-migration
次にいつもだったらrake db:migrationをするんですが、ActiveRecordを使いませんのでDataMapperのモデルを、これもGeneratorで作ります。
./script/generate dd_model post title:string summary:text body:text -f

で、できた。素晴らしい。
その前にapp.yamlにアプリケーションの情報を書きます。一番上の行を自分のアプリケーションの名前にします。
application: 自分のアプリの名前
で、パブリッシュ!
script/publish.sh
あれ?エラー。これでうまくいくはずなんですが、ファイルが大きすぎるってエラーが出てしまいます。前は上手くいってたんだけどなぁ。
java.lang.IllegalStateException: Found a jar file too large to upload
どうやらアップロードするファイルが大きすぎるらしい。そこでエラーが出ていました。うーむ。
Googleで検索したら以下のサイトがあったので、それを参考にやってみます。
再度デプロイ
appcfg.rb --enable_jar_splitting update .
ワオ!上手く行った。しっかり分割されている。
それでAppEngineに登録したアドレスを打ち込むと、おお、できている。す、素晴らしい。こんな簡単に開発、デプロイそして公開できるなんて。本当に感動です。下は作ってみた実験的にページ。
どうでしたか?簡単にアプリを作れて、しかも公開までできてしまいました。あぁ、素晴らしくて気が遠くなりそう。これが無料だというのだからすごいですよね。あ、でもアクセス数が多くなると有料になります。思いついたものをすぐカタチにして、即公開する。もしヒットすればお金を払えばいい。なんと合理的なシステムなのでしょう。夢の環境と言ってもいいですよね。
また気が向いたらもう少し突っ込んだとこを書きます。ではでは。
Webが大好きなみなさんのためになるような情報を発信し続けます。もしブログの記事が気に入ってもらえたらRSS登録をお願いします。Twitterも@Happaでやってますので、よかったらフォローしてみてください。
Webサイト制作を専門にしています。強みとしてはサイト企画からデザイン、プログラミング、サーバー構築までをできることでしょうか。とくにRubyとRailsが大好きです。
好きな音楽でアルバムをつくろうFreelabell[フリーレーベル]