hnakamur’s blog

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

ラベル Ruby の投稿を表示しています。 すべての投稿を表示
ラベル Ruby の投稿を表示しています。 すべての投稿を表示

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


動きました。





2008-11-25

cygwinでRuby on Rails環境整備



Rubyのgemはコンパイルが必要なものが多いのでmswin32版のRubyを使っていてMSのコンパイラがないとインストールできないことが多発。そこでcygwinを見てみるとRubyは最新版の1.8.7p72がバイナリパッケージで用意されていたのでcygwinのRubyをトライしてみることにした。


cygwinのインストーラでビルドに必要そうなパッケージを入れた。gcc-4, g++-4, make, bison, flex, autoconf, automakeなど。


軽くはまったところをメモ。



  • gcc-4だけ入れるとgcc-4.exeというバイナリはあるがgccはないので、シンボリックリンクを張った。



$ cd /usr/bin
$ ln -s gcc-4.exe gcc.exe



  • ImageMagickはcygwinでインストールしておいたのだがrmagickのインストールの際にMagick-confがないと言われた。cygwinでlibMagick-develというパッケージがあることに気づきインストール後再度試すと大丈夫だった。


追記 2008-11-26


その後実際に使ってみると動作が遅いのと、実行中にエラーが頻発するのでcygwin版のrubyの使用はあきらめてActiveScriptRubyに戻りました。





ブログ アーカイブ