dm-datastore-adapterを作りました
DataMapper
これを使えば、MerbアプリをほぼそのままGoogle App Engine for Javaの上で動かせるようになります。 (実際にはgemの依存関係など、細かい調整が必要になりますが)
実際に以下のサイトでdm-datasto
ローカル環境でも別なアダプタを利用すれば、普通のMerbアプリとして動作テストできるので、開発効率が飛躍的に向上します。
DataMapper
これを使えば、MerbアプリをほぼそのままGoogle App Engine for Javaの上で動かせるようになります。 (実際にはgemの依存関係など、細かい調整が必要になりますが)
実際に以下のサイトでdm-datasto
ローカル環境でも別なアダプタを利用すれば、普通のMerbアプリとして動作テストできるので、開発効率が飛躍的に向上します。
gemを指定したディレクトリにインストールする方法を紹介します。 以下のように -i オプションでディレクトリを指定します。
1 gem install -i ./gems data_objects --no-ri --no-rdoc
Gemをunpackしている場合に、もう一つ、二つGemを追加したい時などに重宝します。
現在のところ、JRubyでjgem install do_sqlite3
1 Building native extensions. This could take a while... 2 /usr/local /jruby/lib /ruby/1.8/ mkmf.rb:7: JRuby does not support native extensions . Check wiki.jruby .org for alternativ es. (NotImpleme ntedError)
この問題を解決するには、最新版のdatamapper
http://git
doをgit cloneしたら、まずはdata_objec
1 % jruby -S rake package 2 % sudo jgem install pkg/data_objects-0.9 .12.gem
続いて、do_jdbcディレクトリに移動し、do_jdbcをコンパイルしてインストールします。
1 % jruby -S rake compile 2 % jruby -S rake package 3 % sudo jgem install pkg/do_jdbc-0.9.12-j ava.gem
最後に、do_sqlite3
1 % jruby -S rake package 2 % sudo jgem install pkg/do_sqlite3-0.9.1 2-java.gem
以上でインストール完了です。
Bumble はGoogle App Engine for JavaのDateSoreを利用するためのライブラリですが、Railsで利用する前提で作られているので、 Merbで利用する場合には、以下のような修正を加えると良いようです。
bumble.rb
1 module Bumble 2 (..snip..) 3 def self.included(base) 4 base.send :include, InstanceMe thods 5 base.send :extend, ClassMetho ds 6 Merb::Router.root_behav ior = 7 Merb::Router.root_behav ior.identify(Bumble => :key) 8 end
これによって、resource(@person) #=> /people/5 のようにidentifyしてくれるようになります。
GAEjのファイル数制限が厳しいので、rails.jarを試作してみました。
jrubyのバグなのか、jarファイルの中身に対してrequireをする時に、 pathの中に../..のような感じの指定が入っているとうまくロードできないようなので、その問題を回避するモンキーパッチをあてる必要がありました。
require_fi
1 alias :require_original :require 2 def require(path) 3 path = File.expand_pat h(path) if path.to_s.match(/^file:/) 4 require_or iginal path 5 end 6 7 alias :load_origi nal :load 8 def load(path) 9 path = File.expand_pat h(path) if path.to_s.match(/^file:/) 10 load_origi nal path 11 end
それでこんな感じに使えます。
1 % java -jar $JRUBY_HOME/lib/jruby -complete. jar -rrequire_ fix -rrails-2. 3.2.jar -S rails -v 2 Rails 2.3.2
実際にはlibの下に設置する感じになりますね。
submoduleネタをゲットしたのでメモ。
@githubのtwt:
GitHub gem builder will now pull in submodules
prior to the build.
4:05 AM Apr 9th from web
http://twitter.com/g ithub/stat us/1478454 260
てことは配布しているgemではsubmoduleをpullしてくれるってことでしょうか!!
いいですね!
@github is there any plan to have the tarball builder do the same thing?
http://twitter.com/l arrywright /status/14 78514289 @larrywrigh
t not at the moment. We use git-archiv e which, for some unknown reason, doesn't support submodules .
http://twitter.com/g ithub/stat us/1478579 621
訳があって、ホストOSとゲストOSを同じネットワーク上に置くブリッジ接続の設定していました。
この記事はその四苦八苦の様子の記録です・・・。
2.1系からは、ホストOS側でブリッジ接続用のネットワーク設定をしなくても、VirtualBox
どういう状態かというと、ゲストOS側でNICの認識をするのですが、DHCPでIPアドレスを割り当てることができない、という感じでした。
そんなこんなで悩んでいるときに、VirtualBox
しかし、ここでも罠が・・・。
もともとVirtualBox
流れは、
といった感じでした。
ネットワークの設定に「 ホストインタフェース 」の項目が無くなり、「 ブリッジ ネットワーク 」の項目が!
しかし、「ブリッジネットワークアダプタがありません」とエラーが出て、使えない・・・。
2.1系で簡単にブリッジ接続ができるようになった(らしい)というのに、2.2系でまた逆戻り?
んな、アホな・・・。
と思い、「同じような問題に当たっている人がいるはずだ!」とネットで情報収集していると、某巨大掲示板で良い情報が!
【Sun】VirtualBox
578 :Be名無しさん:2009/04/09
(木) 08:13:50 なんかインストールとアンインストール繰り返してたら
ブリッジでアダプタ選択できるようになった。
アンインストールで失敗する→上書きでインストール→再起動
これが効いたのかな…
さらに、
581 :Be名無しさん:2009/04/09
(木) 09:50:58 VirtualBox
2.2.0の最初のインストールではブリッジのアダプタがインストールされない。 再度インストールプログラムを起動してRepairを選択するとブリッジのアダプタがインストールされる。
・・・・・・・・・らしい。
最初のインストールではアダプタがインストールされない・・・だと・・・?
某巨大掲示板の情報を信用して、Repairでインストールすること数回・・・ブリッジアダプタがインストールされた!!!
\(^0^)/
ゲストOSを起動してみると、きちんとIPアドレスがDHCPで割り当てられてる!!
\(^0^)/ \(^0^)/ \(^0^)/
根気よく何度もVirtualBox
結局のところ、VirtualBox
570 :Be名無しさん:2009/04/09
(木) 00:04:54 VirtualBox
はアップデートに地雷が多いから気をつけてネ 特にネットワーク関係
そんな俺は様子見
Ramaze はModularなWebアプリケーションフレームワークです。 以下のようにしてインストールしました。
1 % sudo gem install ramaze 2 % sudo gem install manveru-innate 3 % sudo gem install manveru-na goro
続いて、以下のようひな形を生成して起動します。
1 % ramaze --create hello 2 % cd hello 3 % ramaze
ログの出力
起動画面
2日前ぐらいからいろいろ頑張ってたのですが、ようやくGAEjの本番環境でMerbアプリを動かせました。
使っているgemをfreezeする仕組みがあるフレームワークであれば、どれでも以外と簡単に動きそうな感じがします。
いやー、これは色々面白い事が出来そうですね!
Google App EngineでMerbを動かしてみた。
しかし、本番環境にデプロイするためには別途Google App Engine Javaのアカウント申請が必要らしい。申請してみたけれど、レスポンスが無いので初回の10000万件の枠はもう無くなっている模様。
残念だなー。