hnakamur’s blog

ものすごい勢いで忘れる私のために未整理でもいいからとりあえずメモ

2008-11-26

ActiveScriptRuby1.8.7p72でRubyGemsを1.3.1にアップデート後gem実行時に「ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。」というエラー発生の修正方法



ActiveScriptRuby 1.8.7p72に入っているRubyGemsは1.2.0だったのですが、capistranoでデプロイしようとするとechoeがなんたらというエラーになってしまいググッたらRubyGemsのバージョンをあげろということだったのであげることにしました。


まずここでgem update --systemが効かずちょっとはまったのですが、



C:\> gem install rubygems-update
C:\> update_rubygems


であげるとのこと。


で、あげるの自体はできたんですが、



C:\> gem -v
ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。


というエラーが出てしまいはまりました。


バッチファイル"C:\Program Files\ruby-1.8\bin\gem.bat"を調べてみるとruby.exeの後のダブルクォーテーションがダブっているというバグでした。



C:\Program Files\ruby-1.8\bin>c:\cygwin\bin\diff -u gem.bat.orig gem.bat
--- gem.bat.orig 2008-11-25 22:35:00.808000000 +0900
+++ gem.bat 2008-11-26 10:41:51.287883000 +0900
@@ -1,6 +1,6 @@
@ECHO OFF
IF NOT "%~f0" == "~f0" GOTO :WinNT
-@"ruby.exe"" "C:/Program Files/ruby-1.8/bin/gem" %1 %2 %3 %4 %5 %6 %7 %8 %9
+@"ruby.exe" "C:/Program Files/ruby-1.8/bin/gem" %1 %2 %3 %4 %5 %6 %7 %8 %9
GOTO :EOF
-@"ruby.exe"" "%~dpn0" %*
+@"ruby.exe" "%~dpn0" %*


これを修正すると無事動きました。



C:\Program Files\ruby-1.8\bin>gem -v
1.3.1


追記


その後情報デザイン学科ブログ » Post Topic » RubyGems 1.3.0, 1.3.1 の問題という記事を見つけました。バグ登録済みRubyForge: RubyGems: トラッカー詳細: 22712 command "gem" does not work when "ruby.exe" is located at "C:\Program Files\ruby-1.8\bin"とのことでそのうち修正されるといいですね。


さらに追記


と思ったら実はまだechoeがないというエラーは終わっていませんでした。



C:\プロジェクトのデイレクトリ>cap -T
C:/Program Files/ruby-1.8/lib/ruby/site_ruby/1.8/rubygems.rb:636:in `report_acti
vate_error': Could not find RubyGem echoe (>= 0) (Gem::LoadError)
from C:/Program Files/ruby-1.8/lib/ruby/site_ruby/1.8/rubygems.rb:141:in
`activate'
from C:/Program Files/ruby-1.8/lib/ruby/site_ruby/1.8/rubygems.rb:165:in
`activate'
from C:/Program Files/ruby-1.8/lib/ruby/site_ruby/1.8/rubygems.rb:164:in
`each'
from C:/Program Files/ruby-1.8/lib/ruby/site_ruby/1.8/rubygems.rb:164:in
`activate'
from C:/Program Files/ruby-1.8/lib/ruby/site_ruby/1.8/rubygems.rb:49:in
`gem'
from C:/Program Files/ruby-1.8/bin/cap:18


原因は調べていませんが対処療法で直りました。


capistranoを入れ直して



C:\プロジェクトのデイレクトリ>gem install capistrano


再度実行してみると



C:\プロジェクトのデイレクトリ>cap -V
ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。


となるので、"C:\Program Files\ruby-1.8\bin\cap.bat"も上と同様にruby.exeの後のダブルクォーテションがダブっているのを修正すると



C:\プロジェクトのデイレクトリ>cap -V
Capistrano v2.5.2


動きました。





ブログ アーカイブ