GAE/JでRailsを動かす(6)
前回、根が深そうなスタックトレースがでたところまでやりました。結局スタックトレースからは何が原因でエラーになったかわからなかったので、とりあえずローカルでRailsを立ち上げてみると、普通にいろいろファイルが足らなかった。。
GAEのクラスが足らないと出たので、GAE/Jのjarをenvironment.rb で読み込み。
require "#{RAILS_ROOT}/lib/java/appengine-api-1.0-sdk-1.2.1"
iknow gemをインストール。
$ sudo $JRUBY_HOME/bin/jruby -S gem install iknow-0.2.3.gem [sudo] password for fujibee: Successfully installed json-jruby-1.1.6-universal-java-1.6 Successfully installed ruby-hmac-0.3.2 Successfully installed oauth-0.3.4 Successfully installed iknow-0.2.3 4 gems installed
もう一度立ち上げてみます。
$ jruby script/server => Booting WEBrick => Rails 2.3.2 application starting on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server [2009-05-29 19:46:03] INFO WEBrick 1.3.1 [2009-05-29 19:46:03] INFO ruby 1.8.6 (2009-05-01) [java] [2009-05-29 19:46:03] INFO WEBrick::HTTPServer#start: pid=31559 port=3000
とりあえず起動まで行きました!
warble.rbにgemを追加します。
config.gems += ["iknow", "will_paginate"]
warbler実行。
$ jruby -S warble mkdir -p tmp/war/WEB-INF/gems/specifications cp /usr/share/jruby-1.3.0RC1/lib/ruby/gems/1.8/specifications/iknow-0.2.3.gemspec tmp/war/WEB-INF/gems/specifications/iknow-0.2.3.gemspec mkdir -p tmp/war/WEB-INF/gems/gems cp /usr/share/jruby-1.3.0RC1/lib/ruby/gems/1.8/specifications/json-jruby-1.1.6-universal-java-1.6.gemspec tmp/war/WEB-INF/gems/specifications/json-jruby-1.1.6-universal-java-1.6.gemspec cp /usr/share/jruby-1.3.0RC1/lib/ruby/gems/1.8/specifications/oauth-0.3.4.gemspec tmp/war/WEB-INF/gems/specifications/oauth-0.3.4.gemspec cp /usr/share/jruby-1.3.0RC1/lib/ruby/gems/1.8/specifications/ruby-hmac-0.3.2.gemspec tmp/war/WEB-INF/gems/specifications/ruby-hmac-0.3.2.gemspec cp /usr/share/jruby-1.3.0RC1/lib/ruby/gems/1.8/specifications/will_paginate-2.2.2.gemspec tmp/war/WEB-INF/gems/specifications/will_paginate-2.2.2.gemspec cp config/warble.rb tmp/war/WEB-INF/config/warble.rb cp config/environment.rb tmp/war/WEB-INF/config/environment.rb mkdir -p tmp/war/WEB-INF/tmp/sessions mkdir -p tmp/war/WEB-INF/tmp/sockets mkdir -p tmp/war/WEB-INF/tmp/pids mkdir -p tmp/war/WEB-INF/tmp/cache cp /usr/share/jruby-1.3.0RC1/lib/ruby/gems/1.8/gems/warbler-0.9.13/lib/jruby-complete-1.3.0RC1.jar tmp/war/WEB-INF/lib/jruby-complete-1.3.0RC1.jar cp /usr/share/jruby-1.3.0RC1/lib/ruby/gems/1.8/gems/warbler-0.9.13/lib/jruby-complete-1.3.0RC1.jar tmp/war/WEB-INF/lib/jruby-complete-1.3.0RC1.jar mkdir -p tmp/war/WEB-INF jar cf laf-gae.war -C tmp/war . $ rm tmp/war/WEB-INF/lib/jruby-complete-1.3.0RC1.jar
gemのファイルがたくさん追加されたようです。。ということは、
$ appengine-java-sdk-1.2.1/bin/appcfg.sh update laf-gae/tmp/war Reading application configuration data... ... Max number of files and blobs is 1000.
やっぱり。gem内のいらないファイル(とりあえずtestファイル)を消します。
$ find tmp/war/WEB-INF/gems/gems -type d -name "test*" -exec rm -rf {} \;
再チャレンジ!
$ appengine-java-sdk-1.2.1/bin/appcfg.sh update laf-gae/tmp/war Reading application configuration data... 2009-05-29 20:02:40.089::INFO: Logging to STDERR via org.mortbay.log.StdErrLog Beginning server interaction for iknow-laf... .. 33% Initiating update. 34% Cloning 25 static files. 35% Cloning 910 application files. .. Update completed successfully. Success.
デプロイ成功!ファイルはとりあえず900ファイル台に収まったようです。
GAEのコンソールを見ると、
E 05-29 04:09AM 10.895 javax.servlet.ServletContext log: unable to create shared application instance org.jruby.rack.RackInitializationException: wrong # of arguments(1 for 3) from /base/data/home/apps/iknow-laf/1.333825030772703407/WEB-INF/app/models/game.rb:6 from /base/data/home/apps/iknow-laf/1.333825030772703407/WEB-INF/app/models/game.rb:31:in `require' from file:/base/data/home/apps/iknow-laf/1.333825030772703407/WEB-INF/lib/ruby-stdlib.jar!/META-
普通のアプリエラーまで落ちてきました。ここまでくればなんとかなりそうです。やった!
GAE/JでRailsを動かす(5)
前回、デプロイまで成功したので、アプリが正常に動くところまで進めたいと思います。
GAEのコンソールで、ログを見ると以下のようになってました。
E 05-27 08:24AM 35.498 javax.servlet.ServletContext log: unable to create shared application instance org.jruby.rack.RackInitializationException: no such file to load -- active_record from file:/base/data/home/apps/iknow-laf/1.333782736479566827/WEB-INF/lib/jruby-rack-0.9.4.jar!/jruby/rack/rails.rb:43:in `require_frameworks_with_servlet_env' from /base/data/home/apps/iknow-laf/1.333782736479566827/WEB-INF/config/../vendor/rails/railties/lib/initializer.rb:134:in `process' from /base/data/home/apps/iknow-laf/1.333782736479566827/WEB-INF/config/../vendor/rails/railties/lib/initializer.rb:113:in `run' from /base/data/home/apps/iknow-laf/1.333782736479566827/WEB-INF/config/environment.rb:14
environment.rbの14行目を見てみると、
# config.frameworks -= [ :active_record, :active_resource, :action_mailer ]
コメントはずしたつもりが巻き戻ってたorz..
有効にして再度チャレンジ。
$ jruby -S warble rake aborted! no such file to load -- will_paginate /usr/share/jruby-1.3.0RC1/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' (See full trace by running task with --trace)
なぜかいまさらwill_paginateのgemがないと怒られ。。
$ jruby -S gem list *** LOCAL GEMS *** actionmailer (2.3.2) actionpack (2.3.2) activerecord (2.3.2) activeresource (2.3.2) activesupport (2.3.2) jruby-openssl (0.5) rails (2.3.2) rake (0.8.4) rspec (1.2.6) sources (0.0.1) warbler (0.9.13)
確かに。
$ sudo $JRUBY_HOME/bin/jruby -S gem install will_paginate Successfully installed will_paginate-2.2.2 1 gem installed Installing ri documentation for will_paginate-2.2.2... Installing RDoc documentation for will_paginate-2.2.2...
では気を取り直して。
$ jruby -S warble cp config/environment.rb tmp/war/WEB-INF/config/environment.rb cp /usr/share/jruby-1.3.0RC1/lib/ruby/gems/1.8/gems/warbler-0.9.13/lib/jruby-complete-1.3.0RC1.jar tmp/war/WEB-INF/lib/jruby-complete-1.3.0RC1.jar cp /usr/share/jruby-1.3.0RC1/lib/ruby/gems/1.8/gems/warbler-0.9.13/lib/jruby-complete-1.3.0RC1.jar tmp/war/WEB-INF/lib/jruby-complete-1.3.0RC1.jar mkdir -p tmp/war/WEB-INF jar cf laf-gae.war -C tmp/war . fujibee@ubuntu810server:laf-gae$ rm tmp/war/WEB-INF/lib/jruby-complete-1.3.0RC1.jar
いちいちでかいjarを削除はめんどくさい。。何とかしたいところです。
$ cd .. $ appengine-java-sdk-1.2.1/bin/appcfg.sh update laf-gae/tmp/wa r Reading application configuration data... 2009-05-28 01:05:10.987::INFO: Logging to STDERR via org.mortbay.log.StdErrLog Beginning server interaction for iknow-laf... 0% Creating staging directory 5% Scanning for jsp files. 20% Scanning files on local disk. 25% Scanned 250 files. 28% Scanned 500 files. 31% Scanned 750 files. 33% Initiating update. 34% Cloning 25 static files. 35% Cloning 778 application files. 36% Cloned 100 files. 37% Cloned 200 files. 37% Cloned 300 files. 37% Cloned 400 files. 37% Cloned 500 files. 37% Cloned 600 files. 37% Cloned 700 files. 40% Uploading 1 files. 52% Uploaded 1 files. 90% Deploying new version. 95% Will check again in 1 seconds 98% Closing update: new version is ready to start serving. 99% Uploading index definitions. Update completed successfully. Success. Cleaning up temporary files...
成功しました。ちゃんと1ファイルしかアップロードされてないですね。
ということは、さっきインストールしたwill_paginateは入っていない?
とりあえずアプリにアクセスしてみると、アプリが500を返しているようです。。
エラーログを見ます。
C 05-27 05:55PM 32.638 Uncaught exception from servlet com.google.apphosting.runtime.HardDeadlineExceededError: This request (6fb7b7f9d69018c0) started at 2009/05/28 00:55:03.484 UTC and was still executing at 2009/05/28 00:55:32.608 UTC. at org.jruby.RubySymbol$SymbolTable.getEntryFromTable(RubySymbol.java:647) at org.jruby.RubySymbol$SymbolTable.fastGetSymbol(RubySymbol.java:639) at org.jruby.Ruby.fastNewSymbol(Ruby.java:2736) at org.jruby.ast.SymbolNode.getSymbol(SymbolNode.java:84) at org.jruby.ast.SymbolNode.interpret(SymbolNode.java:89) at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36) at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104) at org.jruby.ast.BlockNode.interpret(BlockNode.java:71) at org.jruby.evaluator.ASTInterpreter.evalClassDefinitionBody(ASTInterpreter.java:196) at org.jruby.ast.ClassNode.interpret(ClassNode.java:139) at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104) at org.jruby.ast.BlockNode.interpret(BlockNode.java:71) at org.jruby.evaluator.ASTInterpreter.evalClassDefinitionBody(ASTInterpreter.java:196) at org.jruby.ast.ClassNode.interpret(ClassNode.java:139) at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104) at org.jruby.ast.BlockNode.interpret(BlockNode.java:71) at org.jruby.ast.RootNode.interpret(RootNode.java:129) at org.jruby.Ruby.loadFile(Ruby.java:2350) at org.jruby.runtime.load.ExternalScript.load(ExternalScript.java:58) at org.jruby.runtime.load.LoadService.tryLoadingLibraryOrScript(LoadService.java:572) at org.jruby.runtime.load.LoadService.smartLoad(LoadService.java:279) at org.jruby.runtime.load.LoadService.require(LoadService.java:290) at org.jruby.RubyKernel.require(RubyKernel.java:905) at ...
なんか、根深そうですね。。とりあえず今日はここまで。
GAE/JでRailsを動かす(4)
前回、結局GAE/Jの登録がまだでデプロイできないという悲しいオチから1週間、意外と早くGAE/Jの利用可能メールがGoogleから来ました!
Thanks for signing up to try Google App Engine for Java! Your account has now
been activated, so you can begin building applications with our new Java
runtime.
ということで、早速前回と同じコマンドでデプロイを試みてみます。
$ appengine-java-sdk-1.2.1/bin/appcfg.sh update laf-gae/tmp/war Reading application configuration data... 2009-05-27 23:45:26.783::INFO: Logging to STDERR via org.mortbay.log.StdErrLog Beginning server interaction for iknow-laf... 0% Creating staging directory 5% Scanning for jsp files. 20% Scanning files on local disk. 25% Scanned 250 files. 28% Scanned 500 files. 31% Scanned 750 files. 33% Scanned 1000 files. 34% Initiating update. Password for fujibee@gmail...: 35% Cloning 25 static files. 36% Cloning 1092 application files. 37% Cloned 100 files. 37% Cloned 200 files. 37% Cloned 300 files. 37% Cloned 400 files. 37% Cloned 500 files. 37% Cloned 600 files. 37% Cloned 700 files. 37% Cloned 800 files. 37% Cloned 900 files. 37% Cloned 1000 files. 40% Uploading 66 files. 52% Rolling back the update. java.io.IOException: Error posting to URL: http://appengine.google.com/api/appversion/addfile?path=WEB-INF%2Fapp%2Fcontrollers%2Fapplication_controller.rb&app_id=iknow-laf&version=1& 400 Bad Request Max number of files and blobs is 1000. Unable to upload app: Error posting to URL: http://appengine.google.com/api/appversion/addfile?path=WEB-INF%2Fapp%2Fcontrollers%2Fapplication_controller.rb&app_id=iknow-laf&version=1& 400 Bad Request Max number of files and blobs is 1000.
うーん、やっぱり適当に消したのでファイル数オーバーしているようです・・
でも、52%まで行きました!
$ rm -rf vendor/rails/railties/{doc,html,bin,builtin,environments,dispatches} $ rm -rf vendor/rails/actionpack/test
最初からこうやってればよかったのにねぇ。。まあ、気を取り直して。
warblarでcleanしてからモノを準備し直します。
$ jruby -S warble war:clean rm -rf tmp/war rm -f laf-gae.war $ jruby -S warble ... cp public/images/rails.png tmp/war/images/rails.png mkdir -p tmp/war/WEB-INF jar cf laf-gae.war -C tmp/war .
再実行すると。。
$ appengine-java-sdk-1.2.1/bin/appcfg.sh update laf-gae/tmp/war Reading application configuration data... 2009-05-28 00:13:50.396::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/appcfg10512.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/appcfg10512.tmp/WEB-INF/lib/jruby-complete-1.3.0RC1.jar". Consider using --enable_jar_splitting. Please see the logs [/tmp/appcfg10511.log] for further information.
おっと。。jarのsplitが元に戻ってしまった。。
もう一度前回エントリのshを使ってjar分割。再実行。
$ cd .. $ appengine-java-sdk-1.2.1/bin/appcfg.sh update laf-gae/tmp/wa r Reading application configuration data... 2009-05-28 00:15:50.078::INFO: Logging to STDERR via org.mortbay.log.StdErrLog Beginning server interaction for iknow-laf... 0% Creating staging directory 5% Scanning for jsp files. 20% Scanning files on local disk. 25% Scanned 250 files. 28% Scanned 500 files. 31% Scanned 750 files. 33% Initiating update. 34% Cloning 25 static files. 35% Cloning 778 application files. 36% Cloned 100 files. 37% Cloned 200 files. 37% Cloned 300 files. 37% Cloned 400 files. 37% Cloned 500 files. 37% Cloned 600 files. 37% Cloned 700 files. 40% Uploading 65 files. 52% Uploaded 16 files. 61% Uploaded 32 files. 68% Uploaded 48 files. 73% Uploaded 64 files. 90% Deploying new version. 95% Will check again in 1 seconds 98% Will check again in 2 seconds 99% Will check again in 4 seconds 99% Closing update: new version is ready to start serving. 99% Uploading index definitions. Update completed successfully. Success. Cleaning up temporary files...
最後まで行きました!!
アプリケーションにアクセスしてみると、、
エラーになりましたが、Railsは動いているようです!やった!!
GAEはコンソール画面でログなどを見れるようなので、次回以降それを見ながらデバッグして、動かすところまでがんばります。
GAE/JでRailsを動かす(3)
さらに前回の続き。
JRubyのjarを分割する必要があります。Ola Biniさんのスクリプトを使って分割してみます。
$ cd tmp/war/WEB-INF/lib/
#!/bin/sh rm -rf jruby-core.jar rm -rf ruby-stdlib.jar rm -rf tmp_unpack mkdir tmp_unpack cd tmp_unpack jar xf ../jruby-complete-1.3.0RC1.jar cd .. mkdir jruby-core mv tmp_unpack/org jruby-core/ mv tmp_unpack/com jruby-core/ mv tmp_unpack/jline jruby-core/ mv tmp_unpack/jay jruby-core/ mv tmp_unpack/jruby jruby-core/ cd jruby-core jar cf ../jruby-core.jar . cd ../tmp_unpack jar cf ../ruby-stdlib.jar . cd .. rm -rf jruby-core rm -rf tmp_unpack rm -rf jruby-complete-1.3.0RC1.jar
もういちどチャレンジ。
$ appengine-java-sdk-1.2.1/bin/appcfg.sh update laf-gae/tmp/war Reading application configuration data... 2009-05-20 07:20:08.977::INFO: Logging to STDERR via org.mortbay.log.StdErrLog Beginning server interaction for iknow-laf... 0% Creating staging directory 5% Scanning for jsp files. 20% Scanning files on local disk. 25% Scanned 250 files. 28% Scanned 500 files. 31% Scanned 750 files. 33% Scanned 1000 files. 34% Initiating update. Password for fujibee@gmail...: java.io.IOException: Error posting to URL: http://appengine.google.com/api/appversion/create?app_id=iknow-laf&version=1& 400 Bad Request Invalid runtime specified. Unable to upload app: Error posting to URL: http://appengine.google.com/api/appversion/create?app_id=iknow-laf&version=1& 400 Bad Request c. Please see the logs [/tmp/appcfg36234.log] for further information.
おお、先に進んだけど、エラー発生。設定ファイルのRuntime設定かな?
と思い、ググってみたところ、GAE/Jを使うには最初の10000ユーザに入っていないといけないらしい・・
To request permission to upload an app which uses the Java runtime, sign up at the following URL: http://appengine.google.com/promo/java_runtime . For now, access will be limited to the first 10,000 to sign up.
http://code.google.com/intl/en/appengine/kb/java.html#runtime
素直にリンクから登録待ちを出しました。。運がよければ2〜3日中にGoogleからメールが来るらしい。
GAE/J環境を使えるようになるまでは、ローカルで試す方法を調べることにします。
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がでかすぎるとでました。やっぱり例のスクリプトで大きさ減らさないといけないみたい。
でも、途中まで行ったのがうれしい。。
きょうはここまで。
GAE/JでRailsを動かす(1)
前回のエントリで、Google App EngineでJavaが動くようになったからRailsアプリ動かすぞ!といってたのですが、某応募のため時間が取れませんでした・・
それもなんとか終わったので、遅ればせながらやってみます。
もう、id:technohippyさんがやられてますね・・
さっさとやりたいかたは、こちらを参照していただくということで・・・
さて、1ヶ月前からいろいろバージョンアップしているようです。
JRubyも、GAE/Jに対応するために1.3.0をRC1で出したようです。
GAE/Jも1.2.1になってますね。
http://code.google.com/intl/en/appengine/downloads.html#Google_App_Engine_SDK_for_Java
日本語ページのほうはバージョンも古く、Java対応バージョンもリンクされていないので注意が必要です。
では、それぞれ解凍して、やってみましょう。
$ jruby -v jruby 1.3.0RC1 (ruby 1.8.6p287) (2009-05-01 9cbadb8) (Java HotSpot(TM) Client VM 1.6.0_10) [i386-java]
gitからしりとりアプリケーションをcloneします。
$ git clone git://github.com/fujibee/iknow-laf.git laf-gae Initialized empty Git repository in /home/fujibee/work/laf-gae/.git/ remote: Counting objects: 684, done. remote: Compressing objects: 100% (368/368), done. remote: Total 684 (delta 332), reused 616 (delta 288) Receiving objects: 100% (684/684), 1.26 MiB | 24 KiB/s, done. Resolving deltas: 100% (332/332), done.
railsインストール
$ sudo $JRUBY_HOME/bin/jruby -S gem install rails --no-ri --no-rdoc JRuby limited openssl loaded. gem install jruby-openssl for full support. http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL Successfully installed actionpack-2.3.2 Successfully installed actionmailer-2.3.2 Successfully installed activeresource-2.3.2 Successfully installed rails-2.3.2 4 gems installed
ずいぶん新しくなってますね。。しりとりアプリもupdateしてみます。
$ jruby -S rake rails:update (in /home/fujibee/work/laf-gae) /home/fujibee/work/laf-gae/app/controllers/application.rb has been renamed to /home/fujibee/work/laf-gae/app/controllers/application_controller.rb, update your SCM as necessary
applicationコントローラの名前が変わったようです。。
ここら辺で今日は時間切れ。GAEまわりの作業はまた。
Google App EngineがJavaをサポート
先日、いままでPythonしか対応してなかったGoogle App Engine(以下GAE)がついにJava対応を発表しました!
- http://code.google.com/intl/ja/appengine/docs/java/
- http://journal.mycom.co.jp/news/2009/04/08/037/index.html
どうやら、Javaをサブセット化し、一部の機能を省略することでGoogleのインフラ基盤に乗せることにしたようです。
もちろん、Javaのサブセット化はSunにとってはタブーなので、相当反発しているようですが・・
ところで、JavaがGAE対応したことで、期待されるのはJRubyがGAEに乗るか、ということですが、上のマイコミジャーナルの記事にあるように、対応可能なようです。ということは、私が公開しているしりとりゲームも乗せることができる?ということで、やってみたいと思います。
それで、JRubyを乗せることに成功したのは、今まで何度か取り上げた、JRuby本の著者、Ola Biniさんのようです。ブログに詳細がありました。
これによると、やらないといけないことは、
- JRubyを最新の1.2にバージョンアップする
- warblerをインストールしてプラグイン化(plaginize)する
- GAEの制限で1000ファイルしか置けないので、不要ファイルを削除する
- ActiveRecordがいらないので、それを削除&読み込まないようにする
- warblerの設定ファイル(warble.rb)でGAEに必要なファイル("appengine-web.xml", "datastore-indexes.xml")を読み込む
- ほかにJRuby用のいくつかの設定をGAE設定ファイルに追加
- JRuby用JARをGAE用に作成
ということのようです。結構いろいろありますね・・
Ola Biniさんのブログを参考に、少しづつやっていこうと思います。