How often do people get bitten by this?
When operating on a file in the current directory, './' must be
prepended to a filename for File.basename to work...
How often do people get bitten by this?
When operating on a file in the current directory, './' must be
prepended to a filename for File.basename to work...
Hi, i'm either not understanding your issue or not seeing it on my box:
example 1 -> processInputFile("pp_a_test_file_name")
"pp_a_test_file_name" is a string object
File.basename sets outputfile to the same object as
"pp_a_test_file_name".
as a result the gsub! action on outputfile acts on the
"pp_a_test_file_name" object.
example 2 -> processInputFile("./pp_a_test_file_name")
"./pp_a_test_file_name" is a string object
File.basename sets outputfile to a new object as "pp_a_test_file_name".
as a result the gsub! action on outputfile acts on the new object,
without modifying the original "./pp_a_test_file_name"
···
On Tue, 2009-05-12 at 03:10 +0900, lasitha wrote:
On Mon, May 11, 2009 at 9:14 PM, Reid Thompson <reid.thompson@ateb.com> wrote:
> How often do people get bitten by this?
> When operating on a file in the current directory, './' must be
> prepended to a filename for File.basename to work...
Hi, i'm either not understanding your issue or not seeing it on my box:
How often do people get bitten by this?
When operating on a file in the current directory, './' must be
prepended to a filename for File.basename to work...
Hi, i'm either not understanding your issue or not seeing it on my box:
Heureka! It's an aliasing problem which is not there in 1.9:
$ irb19
irb(main):001:0> s = 'foo.txt'
=> "foo.txt"
irb(main):002:0> x = File.basename s
=> "foo.txt"
irb(main):003:0> s.equal? x
=> false
irb(main):004:0> s.object_id
=> 134667930
irb(main):005:0> x.object_id
=> 134637100
irb(main):006:0>
$ irb
irb(main):001:0> s = 'foo'
=> "foo"
irb(main):002:0> x = File.basename s
=> "foo"
irb(main):003:0> s.equal? x
=> true
irb(main):004:0> s.object_id
=> 1073538940
irb(main):005:0> x.object_id
=> 1073538940
irb(main):006:0>
Whether you consider this actually a bug of File.basename - I don't know. It is at least a documentation bug because the docs do not mention that fact.
Kind regards
robert
···
On 11.05.2009 20:21, Reid Thompson wrote:
On Tue, 2009-05-12 at 03:10 +0900, lasitha wrote:
On Mon, May 11, 2009 at 9:14 PM, Reid Thompson <reid.thompson@ateb.com> wrote:
How often do people get bitten by this?
When operating on a file in the current directory, './' must be
prepended to a filename for File.basename to work...
Hi, i'm either not understanding your issue or not seeing it on my box:
Scanned over the above but couldn't spot what you might be on about
Perhaps you could clarify or wittle the example down a bit further?
cheers,
lasitha
example 1 -> processInputFile("pp_a_test_file_name")
"pp_a_test_file_name" is a string object
File.basename sets outputfile to the same object as
"pp_a_test_file_name".
as a result the gsub! action on outputfile acts on the
"pp_a_test_file_name" object.
example 2 -> processInputFile("./pp_a_test_file_name")
"./pp_a_test_file_name" is a string object
File.basename sets outputfile to a new object as "pp_a_test_file_name".
as a result the gsub! action on outputfile acts on the new object,
without modifying the original "./pp_a_test_file_name"
>> How often do people get bitten by this?
>> When operating on a file in the current directory, './' must be
>> prepended to a filename for File.basename to work...
>
> Hi, i'm either not understanding your issue or not seeing it on my box:
>
> $: cd /tmp; touch by.touch
>
> $: ruby19 -ve "puts File.basename 'by.touch'"
> ruby 1.9.1p0 (2009-01-30) [i386-darwin8.11.1]
> by.touch
>
> $: ruby -ve "puts File.basename 'by.touch'"
> ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin8]
> by.touch
>
>> $ cat bug.rb
>> DATAFORMAT_VERSION=1
>>
>> def processInputFile(inputFpath)
>> puts "inputFpath #{inputFpath}"
>> dirpath = File.dirname(inputFpath)
>>
>> outputfile = File.basename(inputFpath)
On Tue, 2009-05-12 at 03:30 +0900, Robert Klemme wrote:
On 11.05.2009 20:10, lasitha wrote:
> On Mon, May 11, 2009 at 9:14 PM, Reid Thompson <reid.thompson@ateb.com> wrote:
>> rthompso@raker>/home/rthompso
>> $ ruby -v
>> ruby 1.8.7 (2009-04-08 patchlevel 160) [i686-linux]
>>
>> rthompso@raker>/home/rthompso
>> $ vi bug.rb
>> rthompso@raker>/home/rthompso
>> $ ruby bug.rb
>> inputFpath /home/rthompso/pp_a_test_file_name
>> outputfile /home/rthompso/SDF_1_a_test_file_name
>> inputFpath /home/rthompso/pp_a_test_file_name
>
> Scanned over the above but couldn't spot what you might be on about
> Perhaps you could clarify or wittle the example down a bit further?
I am assuming that not all tests were done with the same version of the
code and this might have led to confusion.