How to solve Windows PATH in Ruby??

Z

zdk

require 'pathname'
p = Pathname.new("C:\ruby\samples\myFile")
dir = p.dirname
base = p.basename
puts base

I just like to use "myFile",but p.basename seems not work on Windows
Platform.

How to solve this kind of problem?

any help or suggest would be greatly appreciated much.
Thanks a lot.

Warachet S.
 
J

Jan Svitok

Hi,

just escape your backlashes, or use forward slashes (/).

In my code I convert all paths tu unix style, work with them in that
form, and just before calling windows I convert them back. It makes
things much simpler. And in most cases even windows can handle forward
slashes.

J.

require 'pathname'
p = Pathname.new("C:\ruby\samples\myFile")

p = Pathname.new("C:\\ruby\\samples\\myFile")
 
N

N Okia

I think this also depends on what ruby you are using. If you are using
One Click installer Ruby for Windows, then your code should work as
you have it. If you are using cygwin, then it probably won't work
correctly with the backslashes.

Based on the path you are referring to: C:\ruby\, I assume you are
using One Click Ruby. However, in either event, forward slash should
work.
 
1

13

Hi,

Why bothrer and remember which slash to use ? Ruby does it for you.
Here is my approach:

require 'pathname'
p = Pathname.new(File.join('c:', 'ruby', 'samples', 'myfile'))
=> #<Pathname:c:/ruby/samples/myfile>
puts p.dirname
=>c:/ruby/samples
puts p.basename
=> myfile

File.join just cancatenates all strings with appropriate path delimiter.
And AFAIK ruby internally always uses / slash (e.g. puts dirname will
print c:/ruby/samples also on windows).
 
C

Curt Hibbs

If you're going to use blackslashes in a literal string you need to
double them because the backslash is an escape character. So, you
really need to do this:

p = Pathname.new("C:\\ruby\\samples\\myFile")

Curt
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,770
Messages
2,569,583
Members
45,075
Latest member
MakersCBDBloodSupport

Latest Threads

Top