トップ «前の日記(2008-06-17) 最新 次の日記(2008-06-19)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2008-06-18

_ ASR-1.8.7-p17

infoseekへコピーした。ASR配布サイト

WindowsでGemのバイナリ配布を行わない場合、つまり、その場でのビルドを実行しようとすると、nmakeあるいはlinkの問題で、Program Files (x86)のような空白入りディレクトリへコピーするとビルドに失敗する。

これはおもしろくないので、rbconfigなどが得るディレクトリ名をWindowsのShortPathNameを利用するように変更した。

この処理を行うスクリプトは(オンデマンドで処理することになるので)同梱してあるが、こんなの。

require 'pathname'
require 'dl/win32'
class Pathname
  unless class_variable_defined?('@@GetShortPathName')
    @@GetShortPathName = Win32API.new('Kernel32.dll', 'GetShortPathNameA', 'SSI', 'I')
  end
  def shortname
    olen = 200
    begin
      buff = ' ' * olen
      len = @@GetShortPathName.call(relative? ? realpath.to_s : to_s, buff, buff.size)
      if olen < len
        olen = len
      end
    end while olen == len
    buff.rstrip.chomp("\0")
  end
end
  
if $0 == __FILE__
  if ARGV.length == 0
    $stderr.puts 'usage: winpath.rb pathname [more pathname ...]'
    exit 1
  end
  ARGV.each do |f|
    p = Pathname.new(f)
    $stdout.puts p.shortname
  end
end

なんとなく、Pathnameのメソッドだよなぁとか。

rbconfig.rbでは以下のように利用している。

  TOPDIR = Pathname.new(File.dirname(__FILE__).chomp!("/lib/ruby/1.8/i386-mswin32")).shortname

逆に、これまでASRを利用していて、長いパス名を前提にしてプログラムを組まれていた場合は、もしかすると互換性の問題があるかも知れません(あるかな? 既知のディレクトリ名とマッチングをしたりしているとあるかも)。

本日のツッコミ(全5件) [ツッコミを入れる]
_ うえだ (2008-06-18 22:48)

インストールに失敗したのかもしれませんが、エラーが出て rails がインストールできません。<br><br>C:\Ruby\bin>gem install rails<br>C:/Ruby/lib/ruby/1.8/net/http.rb:560: [BUG] Segmentation fault<br>ruby 1.8.7 (2008-06-09 patchlevel 17) [i386-mswin32]<br><br><br>This application has requested the Runtime to terminate it in an unusual way.<br>Please contact the application's support team for more information.<br><br>何か確認すべき点があればご教授いただけませんでしょうか。

_ arton (2008-06-18 22:54)

確認するとしたら、Rubyforge.org(および、そこからリダイレクトされた先)のサーバが生きているかどうかですね。<br>つまり、タイムアウトの処理でsegvしたように見えます。<br>とりあえず、rakeのようにサイズが小さいgemがインストールできるかどうか試していただけますか?

_ うえだ (2008-06-18 23:05)

> とりあえず、rakeのようにサイズが小さいgemがインストールできるかどうか試していただけますか?<br><br>同じエラーでダメでした。activeldap も試しましたが同様です。<br>ちなみにこのエラーはコマンドを叩くとスグに表示されます。

_ arton (2008-06-18 23:39)

>コマンド叩くとスグ<br>それは妙ですね。<br>利用しているOSはなんですか? もしかして16ビットWindows(9xとかMeとか)ですか?<br>あと、インストールに失敗していると思い当たる節があるのであれば、それを教えていただけますか?

_ うえだ (2008-06-19 09:23)

すいません、昨日はすぐ寝てしまいました。<br>OS は XP sp2 です。一応、アンインストールして、<br>インストールしていたフォルダごと全削除してから<br>再インストールしましたが、ダメでした。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|

ジェズイットを見習え