GAE/JでRailsを動かす(2)
前回の続きです。
まず、warblerをインストールします。
$ sudo $JRUBY_HOME/bin/jruby -S gem install warbler Successfully installed warbler-0.9.13 1 gem installed $ jruby -S warble config cp /usr/share/jruby-1.3.0RC1/lib/ruby/gems/1.8/gems/warbler-0.9.13/generators/warble/templates/warble.rb config/warble.rb
warble.rbも作成しました。
次に、config/environment.rb に以下の変更を加えます。
config.frameworks -= [ :active_record, :active_resource, :action_mailer ]
warble.rbにもいくつかの変更を。
config.includes = FileList["appengine-web.xml", "datastore-indexes.xml"] config.webxml.jruby.min.runtimes = 1 config.webxml.jruby.max.runtimes = 1 config.webxml.jruby.init.serial = true
では、ここからGAE/Jの設定。config/appengine-web.xml に以下の内容を保存。
GAEにアプリ登録をしてない場合は、ここでしておく。
(携帯のメールに認証コードを送る、って言われました。これ以外方法ないの?)
<?xml version="1.0" encoding="utf-8"?> <!-- appengine-web.xml --> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <!-- アプリ名 --> <application>iknow-laf</application> <version>1</version> <system-properties> <property name="jruby.management.enabled" value="false" /> <property name="os.arch" value="" /> </system-properties> </appengine-web-app>
ここで、もうひとつの必要ファイル、"datastore-indexes.xml"を作ろうとしたんですが、あれ、これどうやるんだろう?
調べてみると、Googleのストレージを使うときに必要のようです。ここを読むと。とりあえずなくてもいいのかな?
上の、warble.rbからこのファイルは抜いてみます。
Googleのストレージは、Ora BiniさんのBumbleというのが使える、とのこと。
しりとりアプリのコードも少し変えないと。。
#class Game < ActiveRecord::Base class Game include Bumble ds :score, :name
あと必要なのが、現在のrails gemsのフリーズと不要ファイルの削除。GAE/Jは1000ファイルまでしか使えないらしいので。
$ jruby -S rake rails:freeze:gems (in /home/fujibee/work/laf-gae) Freezing to the gems for Rails 2.3.2 rm -rf vendor/rails mkdir -p vendor/rails cd vendor/rails Unpacked gem: '/home/fujibee/work/laf-gae/vendor/rails/activesupport-2.3.2' mv activesupport-2.3.2 activesupport Unpacked gem: '/home/fujibee/work/laf-gae/vendor/rails/activerecord-2.3.2' mv activerecord-2.3.2 activerecord Unpacked gem: '/home/fujibee/work/laf-gae/vendor/rails/actionpack-2.3.2' mv actionpack-2.3.2 actionpack Unpacked gem: '/home/fujibee/work/laf-gae/vendor/rails/actionmailer-2.3.2' mv actionmailer-2.3.2 actionmailer Unpacked gem: '/home/fujibee/work/laf-gae/vendor/rails/activeresource-2.3.2' mv activeresource-2.3.2 activeresource Unpacked gem: '/home/fujibee/work/laf-gae/vendor/rails/rails-2.3.2' cd - $ rm -rf vendor/rails/actionmailer $ rm -rf vendor/rails/activerecord $ rm -rf vendor/rails/activeresource
削除は適当です。足らないかも。
GAE/JのSDK JARも必要。
$ cp lib/user/appengine-api-1.0-sdk-1.2.1.jar /home/fujibee/work/laf-gae/lib/
そろそろ、一回GAE環境にアップしてみたい衝動に駆られたので、warblerでwar作って、デプロイ手続きしてみます。
(絶対に動かない自信あるけど。)
$ jruby -S warble $ cd .. fujibee@ubuntu810server:work$ appengine-java-sdk-1.2.1/bin/appcfg.sh update laf-gae/tmp/wa r Email: Reading application configuration data... 2009-05-15 22:40:07.768::INFO: Logging to STDERR via org.mortbay.log.StdErrLog Beginning server interaction for iknow-laf... 0% Creating staging directory 5% Scanning for jsp files. java.lang.IllegalStateException: Found a jar file too large to upload: "/tmp/appcfg54928.tmp/WEB-INF/lib/jruby-complete-1.3.0RC1.jar". Consider using --enable_jar_splitting. Unable to upload app: Found a jar file too large to upload: "/tmp/appcfg54928.tmp/WEB-INF/lib/jruby-complete-1.3.0RC1.jar". Consider using --enable_jar_splitting. Please see the logs [/tmp/appcfg54927.log] for further information.
おー。jruby-complete-1.3.0RC1.jarがでかすぎるとでました。やっぱり例のスクリプトで大きさ減らさないといけないみたい。
でも、途中まで行ったのがうれしい。。
きょうはここまで。