livingsocial / rake-pipeline

An extension to Rake for dealing with a directory of inputs, a number of filters, and a directory of outputs
MIT License
276 stars 38 forks source link

FileWrapper.fullpath fails on Windows #60

Open raghurajah opened 12 years ago

raghurajah commented 12 years ago

FileWrapper.fullpath expects root to start with a '/'. In windows this fails because root path starts with a 'drive-letter:'

      def fullpath
        raise "#{root}, #{path}" unless root =~ /^\//
        File.join(root, path)
      end
bloemendal commented 12 years ago

Have you tried forking and removing that line? :) Because I did remove the screw-all-windows-devs line and it worked for me.

dudleyf commented 12 years ago

For those of us who are Windows-challenged, what's the correct fix? Something like:

      def fullpath
        raise "#{root}, #{path}" unless root =~ /^(\/|[a-zA-Z]:\\)/
        File.join(root, path)
      end

? We're really not trying to screw all Windows devs on purpose ;)

raghurajah commented 12 years ago

I think that would work. Thanks Dudley.

On Mar 8, 2012, at 2:56 PM, Dudley Flandersreply@reply.github.com wrote:

For those of us who are Windows-challenged, what's the correct fix? Something like:

     def fullpath
       raise "#{root}, #{path}" unless root =~ /^(\/|[a-zA-Z]:\\)/
       File.join(root, path)
     end

? We're really not trying to screw all Windows devs on purpose ;)


Reply to this email directly or view it on GitHub: https://github.com/livingsocial/rake-pipeline/issues/60#issuecomment-4400881

thekevinbrown commented 12 years ago

I was getting this issue on Windows, and when I went into the file_wrapper.rb file, the above fix was present in my installed version of file_wrapper.rb:

raise "#{root}, #{path}" unless root =~ /^(\/|[a-zA-Z]:\\)/

But I was still getting an error, as fullpath at that time is not defined in Ruby as, for example, C:\, but instead as c:/. I did the following to the line and am now able to build:

raise "#{root}, #{path}" unless root =~ /^(\/|[a-zA-Z]:\/)/

Note the use of a forward slash instead of a back slash on the end of the windows portion of the regex.

Would you like me to issue a pull request?

dudleyf commented 12 years ago

@blargity Sure, that would be great, thanks.

bobspryn commented 12 years ago

+1 (Sorry for the plus one, but it lets me know when this is fixed)