Относительно ответа @rwilliams aka r-dub:
ActiveSupport переместил свои компоненты в отдельные модули для детализации. Вместо того, чтобы загружать все сразу, мы можем сказать ему загружать только определенные подмножества, или, если мы все еще выбираем, мы можем загрузить все сразу. В любом случае, мы не можем использовать require 'activesupport'
, как раньше, вместо этого мы должны использовать require 'activesupport/all'
или одно из подмножеств.
>> require 'active_support/core_ext/array/conversions' #=> true
>> [{:a => 1, :b => 2}, {:c => 3}].to_xml
=> "<?xml version="1.0" encoding="UTF-8"?>\n<objects type="array">\n <objects a="1" b="2" type="hash"/>\n <objects c="3" type="hash"/>\n</objects>\n"
Кроме того, ActiveSupport содержит поддержку JSON, поэтому вы можете выполнить полное преобразование с помощью AR:
>> require 'active_support/all' #=> true
>> json = {'foo'=>'bar'}.to_json #=> "{"foo":"bar"}"
>> ActiveSupport::JSON.decode(json).to_xml #=> "<?xml version="1.0" encoding="UTF-8"?>\n<hash>\n <foo>bar</foo>\n</hash>\n"
Первая строка загружается в преобразованиях XML и JSON. Вторая строка устанавливает образец JSON, который будет использоваться для тестирования. Третья строка принимает вид JSON, декодирует его, а затем преобразует в XML.