Ну, я в том же случае.
Я обнаружил, что мои 64-разрядные версии Windows 7 распознаются как RUBY_PLATFORM, отличные от запланированного случая.
Шахта 'i386-mingw32' RUBY_PLATFORM.
Если вы читаете «base.rb» в строке 53, возникает условие
if 'RUBY_PLATFORM =~ /win32/'
Так что, в моем случае, это не удастся. Я меняю строку так:
if 'RUBY_PLATFORM =~ /win32/' || RUBY_PLATFORM =~ /i386-mingw32/
И это нормально.
Я сохранил код, написанный Railsblogger. (с обновлением для отображения времени выполнения)
Итак, теперь это так:
# A wrapper for Kernel#system that logs the command being executed.
def system(*args)
cmd = args.join(' ')
result = nil
if RUBY_PLATFORM =~ /win32/ || RUBY_PLATFORM =~ /i386-mingw32/
cmd = cmd.split(/\s+/).collect {|w| w.match(/^[\w+]+:\/\//) ? w : w.gsub('/', '\\') }.join(' ') # Split command by spaces, change / by \\ unless element is a some+thing://
# code from http://lifeisrails.wordpress.com/2010/03/25/capistrano-deploy_via-copy-from-gitwindows/
if cmd =~ /\s&&\s/ && cmd =~ /^git\s+clone/
cmd1, cmd = cmd.split(" && ", 2)
logger.trace "executing locally: #{cmd1}"
elapsed = Benchmark.realtime do
result = super(cmd1)
end
logger.trace "command finished in #{(elapsed * 1000).round}ms"
result
end
cmd.gsub!(/^cd /,'cd /D ') # Replace cd with cd /D
cmd.gsub!(/&& cd /,'&& cd /D ') # Replace cd with cd /D
logger.trace "executing locally: #{cmd}"
elapsed = Benchmark.realtime do
result = super(cmd)
end
else
logger.trace "executing locally: #{cmd}"
elapsed = Benchmark.realtime do
result = super
end
end
Надеюсь, это поможет !!
Скажите, работает ли он у вас?
И ... если это не так, вы можете проверить отображение вашего 'RUBY_PLATFORM', добавив строку перед условием, например
logger.trace RUBY_PLATFORM