ちなみに

火曜日の空は僕を押しつぶした。

Merbでdm-*がnot foundな件

Merb関連のエントリを読んでいたら触ってみたくなったので、入れてみたのですが・・・

$ sudo gem install merb
$ merb-gen app myapp
$ cd myapp
$ merb
Loading init file from /Users/tomohiro/program/merb/myapp/config/init.rb
Loading /Users/tomohiro/program/merb/myapp/config/environments/development.rb
 ~ Loaded DEVELOPMENT Environment...
 ~
 ~ FATAL: The gem dm-core (= 0.9.7, runtime), [] was not found
 ~
 ~
 ~ FATAL: The file dm-core was not found
 ~

きゃーっ、ということで調べました。


とりあえずdm-coreが入っているか確認

$ gem list dm-

*** LOCAL GEMS ***

dm-aggregates (0.9.7)
dm-core (0.9.7)
dm-migrations (0.9.7)
dm-sweatshop (0.9.7)
dm-timestamps (0.9.7)
dm-types (0.9.7)
dm-validations (0.9.7)

問題なさそうなので、config/dependencies.rbをいじってみる

diff --git a/config/dependencies.rb b/config/dependencies.rb
index 4f1e627..1f99cf0 100644
--- a/config/dependencies.rb
+++ b/config/dependencies.rb
@@ -15,9 +15,9 @@ dependency "merb-auth-slice-password", merb_gems_version
 dependency "merb-param-protection", merb_gems_version
 dependency "merb-exceptions", merb_gems_version
  
-dependency "dm-core", dm_gems_version         
 dependency "dm-aggregates", dm_gems_version   
 dependency "dm-migrations", dm_gems_version   
 dependency "dm-timestamps", dm_gems_version   
 dependency "dm-types", dm_gems_version        
 dependency "dm-validations", dm_gems_version  
+dependency "dm-core", dm_gems_version

dm-coreの問題なのかを確かめるために順番を入れ替えてみました

$ merb
Loading init file from /Users/tomohiro/program/merb/myapp/config/init.rb
Loading /Users/tomohiro/program/merb/myapp/config/environments/development.rb
 ~ Loaded DEVELOPMENT Environment...
 ~
 ~ FATAL: The gem dm-aggregates (= 0.9.7, runtime), [] was not found
 ~
 ~
 ~ FATAL: The file dm-aggregates was not found
 ~

やはりdm-系が全滅みたいです。仕方が無いのでruby-debugでmerbの挙動を追いかけます。

$ rdebug `which merb`
/opt/local/bin/merb:9
require 'rubygems'
(rdb:1)

(実は意味が無かったので詳細は略)

読み込みのあたりを追いかけると、やっぱりdm-coreの読み込みのところで落ちています。


とここでaddressableというライブラリのバージョンが上がって問題が起きているとの情報を得て、一度そちらを当たってみることにしました。バージョンを下げるだけみたいなので試します。

$ gem list addressable

*** LOCAL GEMS ***

addressable (2.0.0, 1.0.4)

$ sudo gem uninstall addressable -v 2.0.0

You have requested to uninstall the gem:
        addressable-2.0.0
data_objects-0.9.6 depends on [addressable (>= 1.0.3)]
data_objects-0.9.7 depends on [addressable (~> 2.0)]
dm-core-0.9.7 depends on [addressable (~> 2.0)]
If you remove this gems, one or more dependencies will not be met.
Continue with Uninstall? [Yn] y
Successfully uninstalled addressable-2.0.0

$ merb
Loading init file from /Users/tomohiro/program/merb/myapp/config/init.rb
Loading /Users/tomohiro/program/merb/myapp/config/environments/development.rb
 ~ Loaded DEVELOPMENT Environment...
 ~ 
 ~ FATAL: The gem dm-core (= 0.9.7, runtime), [] was not found
 ~ 
 ~ 
 ~ FATAL: The file dm-core was not found
 ~ 

駄目ですね。公式サイトにも Merb 1.0.1 (Released Nov 18 2008, minor bug fixes and DataMapper 0.9.7) って書かれていますし、問題はこれではないようです。

ということで入れ直し、

$ sudo gem update 
Updating installed gems
Updating addressable
Successfully installed addressable-2.0.0
Gems updated: addressable

もうなんか疲れたから諦めよう。エントリにまとめるために、エラーメッセージを確認しておこう、

$ merb
Loading init file from /Users/tomohiro/program/merb/myapp/config/init.rb
Loading /Users/tomohiro/program/merb/myapp/config/environments/development.rb
 ~ Connecting to database...
 ~ Loaded slice 'MerbAuthSlicePassword' ...
 ~ Parent pid: 9762
 ~ Compiling routes...
 ~ Activating slice 'MerbAuthSlicePassword' ...
merb : worker (port 4000) ~ Starting Mongrel at port 4000
merb : worker (port 4000) ~ Successfully bound to port 4000

!!

動いた・・・?

ブラウザからhttp://localhost:4000を叩くと、

動きました。

うーむ。merb 1.0.1 -> addressable 2.0.0の順番で入れないといけないようです。