This project is archived and is in readonly mode.
Array to_xml fix
Reported by Rudolf Gavlas | September 27th, 2008 @ 07:10 PM | in 2.x
Short description:
See the patch, the hash passed as argument to recursing
to_xml
method is pointing to the same structure as the
original opts
hash.
$ rails -v Rails 2.0.2 $ ruby -v ruby 1.8.6 (2007-03-13
patchlevel 0) [i386-netbsdelf]
(rails console) before the patch:
>> print [[], []].to_xml <?xml version="1.0"
encoding="UTF-8"?> <arrays type="array"> <array
type="array"/> <nil-classes type="array"/> </arrays>
=> nil
after the patch:
>> print [[],[]].to_xml <?xml version="1.0"
encoding="UTF-8"?> <arrays type="array"> <array
type="array"/> <array type="array"/> </arrays> =>
nil
Explanation:
After the merge!
method on line:
each { |e| e.to_xml(opts.merge({ :skip_instruct => true
})) }
the hash passed to next iteration of to_xml
method
is pointing to the same structure as the forcibly merged
opts
hash. [1] Then after:
root = options.delete(:root).to_s
this parameter is deleted from the original opts
hash too and to the next iteration are going wrong
opts
.
As there is no need to use merge!
here because
simple merge
returns the same, and we repeat the
merging in each iteration (no need to forcibly change the original
hash), I propose this patch.
[1] It is the same as in this example: $
irb irb(main):001:0> a = {'a' => 1, 'b' => 2} =>
{"a"=>1, "b"=>2} irb(main):002:0> b = {'b' => 3, 'c'
=> 4} => {"b"=>3, "c"=>4} irb(main):003:0> c =
a.merge!(b) => {"a"=>1, "b"=>3, "c"=>4}
irb(main):004:0> a => {"a"=>1, "b"=>3, "c"=>4}
irb(main):005:0> c => {"a"=>1, "b"=>3, "c"=>4}
irb(main):006:0> c.delete('c') => 4 irb(main):007:0> a
=> {"a"=>1, "b"=>3} irb(main):008:0> c =>
{"a"=>1, "b"=>3}
Comments and changes to this ticket
-
Repository October 31st, 2008 @ 05:42 PM
- State changed from new to resolved
(from [e466ae13e9b6d901e3e39bb9ceeafd83e266ce81]) Fixed the option merging in Array#to_xml [#1126 state:resolved] http://github.com/rails/rails/co...
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile »
<h2 style="font-size: 14px">Tickets have moved to Github</h2>
The new ticket tracker is available at <a href="https://github.com/rails/rails/issues">https://github.com/rails/rails/issues</a>
People watching this ticket
Attachments
Referenced by
- 1126 Array to_xml fix (from [e466ae13e9b6d901e3e39bb9ceeafd83e266ce81]) Fixed t...