gae上でjrubyを動かしたい。までの道のり2
何がしたいの?
- Google App Engine上でrubyアプリケーションを公開したい
どのように機能するの?
どこで確認したの?
- MacOSX (10.6.2 Snow Leopard) (Darwin Kernel Version 10.2.0)
- java 1.6.0_17
- appengine-java-sdk 1.3.1
- jruby jruby 1.4.0 (ruby 1.8.7 patchlevel 174)
- ruby 1.9.1p376 => 紆余曲折の末 動作できず。
- ruby 1.8.7 (2008-08-11 patchlevel 72) => 動作した!
いつ確認したの?
- 2010年3月23日
何か注意点はあるの?
- 手元の環境ではruby1.9ではアプリケーションの構築に失敗しました。ruby1.8でHelloWorldに成功しました。原因は分かりましたが対策が分かりませんした。
前回 からの続きです。
調べてみたもののどのように対策して良いものかわかりません。
切り分けのために大胆にも一旦ruby1.9環境を捨ててmacosの標準の1.8に戻ってみます。
その前にruby1.9でインストールした/opt/local/bin/appcfg.rbと
この後ruby1.8でインストールする/usr/bin/appcfg.rbの名前衝突を避けるために一旦1.9側のgemからappengine-toolsを削除します。
$ sudo gem uninstall appengine-tools Password: Remove executables: appcfg.rb, dev_appserver.rb in addition to the gem? [Yn] Y Removing appcfg.rb Removing dev_appserver.rb You have requested to uninstall the gem: appengine-tools-0.0.10.1 google-appengine-0.0.10.1 depends on [appengine-tools (= 0.0.10.1)] If you remove this gems, one or more dependencies will not be met. Continue with Uninstall? [Yn] Y Successfully uninstalled appengine-tools-0.0.10.1 $ $ which ruby /opt/local/bin/ruby $ $ sudo port uninstall ruby19 Password: ---> Deactivating ruby19 @1.9.1-p376_0+nosuffix ---> Uninstalling ruby19 @1.9.1-p376_0+nosuffix $ $ which ruby /usr/bin/ruby $ $ ruby -v ruby 1.8.7 (2008-08-11 patchlevel 72) [universal-darwin10.0] $ $
gemのバージョンアップは先ほどと同じ手順で...と思いきやupdate_rubygemsが動作しません。
macportのgemはパスが通っている/opt/loca/binにupdate_rubygemsを配置してくれましたが、こっちはその気は無いようです。
$ gem -v 1.3.1 $ $ $ gem search -r rubygems-update *** REMOTE GEMS *** rubygems-update (1.3.6) $ $ which gem /usr/bin/gem $ $ sudo gem install rubygems-update Successfully installed rubygems-update-1.3.6 1 gem installed Installing ri documentation for rubygems-update-1.3.6... Installing RDoc documentation for rubygems-update-1.3.6... Could not find main page README Could not find main page README Could not find main page README Could not find main page README $ $ sudo update_rubygems sudo: unable to execute /opt/local/bin/update_rubygems: No such file or directory $
半分やけっぱちで直パスで叩いてみます。でもダメ。
$ $ sudo /Library/Ruby/Gems/1.8/gems/rubygems-update-1.3.6/bin/update_rubygems Error: Cannot find RubyGems Update Path! RubyGems has already been updated. The rubygems-update gem may now be uninstalled. E.g. gem uninstall rubygems-update $ $ gem -v 1.3.1 $ $
結局 -update --sysytemでアップデートしました。
$ $ sudo gem update --system Updating RubyGems Updating rubygems-update Successfully installed rubygems-update-1.3.6 :0:Warning: Gem::SourceIndex#search support for String patterns is deprecated Updating RubyGems to 1.3.6 Installing RubyGems 1.3.6 RubyGems 1.3.6 installed === 1.3.6 / 2010-02-17 中略 $ $ gem -v 1.3.6 $
何度目だろうかリトライ...成功。
$ $ sudo gem install google-appengine Password: Successfully installed rack-1.1.0 Successfully installed appengine-rack-0.0.6 Successfully installed appengine-sdk-1.3.1 Successfully installed appengine-jruby-jars-0.0.6 Successfully installed bundler08-0.8.5 Successfully installed rubyzip-0.9.4 Successfully installed appengine-tools-0.0.10.1 Successfully installed google-appengine-0.0.10.1 8 gems installed
とうとう成功。そしてサヨウナラruby1.9。早すぎたんだ(ry....
$ $ appcfg.rb generate_app myhello18 => Generating gemfile => Bundling gems Calculating dependencies... Updating source: http://gems.rubyforge.org /Library/Ruby/Gems/1.8/gems/bundler08-0.8.5/lib/bundler08/resolver.rb:115:Warning: Gem::Dependency#version_requirements is deprecated and will be removed on or after August 2010. Use #requirement Caching: appengine-rack-0.0.6.gem Caching: rack-1.1.0.gem Installing rack (1.1.0) Installing appengine-rack (0.0.6) Done. => Packaging gems => Installing JRuby => Installing JRuby-Rack => Installing appengine-sdk => Generating rackup => Generating configuration files $ $
そして開発サーバ起動...ちょっとエラーでているけど成功。
$ dev_appserver.rb myhello18 => Booting DevAppServer => Press Ctrl-C to shutdown server 2010-03-23 23:17:53.344 java[67777:1707] [Java CocoaComponent compatibility mode]: Enabled 2010-03-23 23:17:53.347 java[67777:1707] [Java CocoaComponent compatibility mode]: Setting timeout for SWT to 0.100000 2010/03/23 14:17:55 com.google.appengine.tools.development.agent.impl.BlackList initBlackList ?v???I: Unable to read a jre library while constructing the blacklist. Security restrictions may not be entirely emulated. /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/lib/plugin.jar The server is running at http://localhost:8080/ ^C$ $ $