Path problem on Windows: backslash vs forward slash

I can't figure out why the below code works fine:

#encoding: utf-8
require 'spreadsheet'

file_path ='\\\\server100\\Folder1\\Folder2\\oléolé-file.xls'
Spreadsheet.client_encoding = 'UTF-8'
Spreadsheet.open(file_path) do |book|
  puts "sheets: #{book.worksheets.size}"
  sheet = book.worksheet(0)
  puts "First sheet name: #{sheet.name}"
end

But when I tried to do almost the same, just searching the most recent
file and pass it to the Spreadsheet like that, it doesn't work. Ruby
replaces back slashes by forward ones what causes a problem on Windows
box:

#encoding: utf-8
require 'spreadsheet'

folder = ''\\\\server100\\Folder1\\Folder2'
pattern = 'oléolé-*.xls'
Dir.chdir(folder)
source_files = Dir.glob(pattern)
puts "source files: #{source_files.inspect}"
recent_file = source_files.max_by { |f1| File.mtime(f1) }
Spreadsheet.client_encoding = 'UTF-8'
Spreadsheet.open(file_path) do |book|
  puts "sheets: #{book.worksheets.size}"
  sheet = book.worksheet(0)
  puts "First sheet name: #{sheet.name}"
end

The error I get is:

spreadsheet-0.6.8/lib/spreadsheet/excel/reader.rb:1172:in `setup':
undefined method `read' for false:FalseClass (NoMethodError)

I'm on Windows XP SP3, Ruby 1.9.3.
Thank you

···

--
Posted via http://www.ruby-forum.com/.

Is it maybe to do with

''\\\\server100\\Folder1\\Folder2'
should be
'\\\\server100\\Folder1\\Folder2'

without the double '' at the start

···

On 26/03/2012 9:18 PM, Serguei Cambour wrote:

I can't figure out why the below code works fine:

#encoding: utf-8
require 'spreadsheet'

file_path ='\\\\server100\\Folder1\\Folder2\\oléolé-file.xls'
Spreadsheet.client_encoding = 'UTF-8'
Spreadsheet.open(file_path) do |book|
   puts "sheets: #{book.worksheets.size}"
   sheet = book.worksheet(0)
   puts "First sheet name: #{sheet.name}"
end

But when I tried to do almost the same, just searching the most recent
file and pass it to the Spreadsheet like that, it doesn't work. Ruby
replaces back slashes by forward ones what causes a problem on Windows
box:

#encoding: utf-8
require 'spreadsheet'

folder = ''\\\\server100\\Folder1\\Folder2'
pattern = 'oléolé-*.xls'
Dir.chdir(folder)
source_files = Dir.glob(pattern)
puts "source files: #{source_files.inspect}"
recent_file = source_files.max_by { |f1| File.mtime(f1) }
Spreadsheet.client_encoding = 'UTF-8'
Spreadsheet.open(file_path) do |book|
   puts "sheets: #{book.worksheets.size}"
   sheet = book.worksheet(0)
   puts "First sheet name: #{sheet.name}"
end

The error I get is:

spreadsheet-0.6.8/lib/spreadsheet/excel/reader.rb:1172:in `setup':
undefined method `read' for false:FalseClass (NoMethodError)

I'm on Windows XP SP3, Ruby 1.9.3.
Thank you

No, I think there was a posti format problem. Every path is arounded
with DOUBLE quotes:

folder = "\\\\server100\\Folder1\\Folder2"

···

--
Posted via http://www.ruby-forum.com/.

hi Serguei,

  can you use File::Separator instead of either forward or backward
slashes?

  - j

···

--
Posted via http://www.ruby-forum.com/.

It looks like you're not setting the file_path variable.

Or, you cut out some part of code before posting here. Please show us
a complete working (that is, not working :wink: ) example.

-- Matma Rex

Hate to break it to you, Jake:

https://github.com/ruby/ruby/blob/trunk/file.c#L5444

···

On Tue, Mar 27, 2012 at 7:22 PM, jake kaiden <lists@ruby-forum.com> wrote:

hi Serguei,

can you use File::Separator instead of either forward or backward
slashes?

- j

--
Posted via http://www.ruby-forum.com/\.

Steve Klabnik wrote in post #1053672:

Hate to break it to you, Jake:

https://github.com/ruby/ruby/blob/trunk/file.c#L5444

  oops :wink:

  what a drag...

  - j

···

--
Posted via http://www.ruby-forum.com/\.