[#46930] [ruby-trunk - Bug #6825][Open] forking and pthread_cond_timedwait: Invalid argument (EINVAL) on OS X / 1.9.3-p194 — "xentronium (Mark A)" <markizko@...>

29 messages 2012/08/02

[#46974] [ruby-trunk - Bug #6830][Assigned] test failure test_constants(OpenSSL::TestConfig) [/ruby/test/openssl/test_config.rb:27] on Mac + homebrew — "kosaki (Motohiro KOSAKI)" <kosaki.motohiro@...>

17 messages 2012/08/04

[#46975] [ruby-trunk - Bug #6831][Assigned] test_getpwuid() on Mountain Lion — "kosaki (Motohiro KOSAKI)" <kosaki.motohiro@...>

12 messages 2012/08/04

[#46996] [ruby-trunk - Bug #6836][Assigned] Improve File.expand_path performance in Windows — "luislavena (Luis Lavena)" <luislavena@...>

15 messages 2012/08/04

[#47036] [ruby-trunk - Feature #6841][Open] Shorthand for Assigning Return Value of Method to Self — "wardrop (Tom Wardrop)" <tom@...>

18 messages 2012/08/07

[#47108] [ruby-trunk - Feature #6852][Open] [].transpose should behave specially — "boris_stitnicky (Boris Stitnicky)" <boris@...>

13 messages 2012/08/10

[#47138] [ruby-trunk - Bug #6861][Open] ERB::Util.escape_html is not escaping single quotes — "spastorino (Santiago Pastorino)" <santiago@...>

14 messages 2012/08/12

[#47163] [ruby-trunk - Bug #6865][Open] GC::Profiler.report might create a huge String and invoke a few GC cycles — "Eregon (Benoit Daloze)" <redmine@...>

9 messages 2012/08/13

[#47189] [ruby-trunk - Feature #6868][Open] Make `do` in block syntax optional when the block is the last argument of a method and is not an optional argument — "alexeymuranov (Alexey Muranov)" <redmine@...>

8 messages 2012/08/14

[#47243] [ruby-trunk - Feature #6895][Open] TracePoint API — "ko1 (Koichi Sasada)" <redmine@...>

27 messages 2012/08/20

[#47267] [ruby-trunk - Bug #6903][Open] [[Ruby 1.9:]] --enable-load-relative broken on systems with /lib64 — "mpapis (Michal Papis)" <mpapis@...>

11 messages 2012/08/22

[#47309] [ruby-trunk - Bug #6929][Open] Documentation for Ripper — "zzak (Zachary Scott)" <zachary@...>

16 messages 2012/08/25

[#47345] [ruby-trunk - Feature #6946][Open] FIPS support? — "vo.x (Vit Ondruch)" <v.ondruch@...>

35 messages 2012/08/28

[ruby-core:47300] Re: [ruby-trunk - Feature #6910] Loading syck's broken yaml with psych

From: Aaron Patterson <tenderlove@...>
Date: 2012-08-23 16:14:52 UTC
List: ruby-core #47300
On Thu, Aug 23, 2012 at 03:49:03PM +0900, naruse (Yui NARUSE) wrote:
> 
> Issue #6910 has been updated by naruse (Yui NARUSE).
> 
> 
> I want to migrate gradually.
> The way needs explicit big bang conversion.

Then I guess you need a way to differentiate converted yaml from
non-converted yaml.  Most people I've helped with this use something out
of band like a database column to mark the conversion.  However, it is
possible to use a YAML version.  Syck does not support YAML 1.1, so we
can tag the YAML as version 1.1.  Unfortunately, syck will not raise an
exception on the version identifier, so we have to test for it
ourselves.  Here is an example:

    require 'syck'
    require 'yaml'
    require 'psych'
    require 'minitest/autorun'
    
    class Loader < MiniTest::Unit::TestCase
      def converted? text
        text =~ /\A%YAML 1\.1/
      end
    
      def load_yaml text
        if converted? text
          Psych.load text
        else
          YAML.load text
        end
      end
    
      def dump_yaml object
        Psych.dump object, {:version => [1,1]}
      end
    
      def test_convert
        obj         = ["\u3042",Time.at(0).to_s]
        legacy_yaml = YAML.dump obj
        obj2        = load_yaml legacy_yaml
    
        # we can load legacy yaml
        assert_equal obj, obj2
    
        converted_yaml = dump_yaml obj
    
        # make sure the yaml is tagged when dumping
        assert converted? converted_yaml
    
        # make sure object loaded from converted yaml is same
        assert_equal obj, load_yaml(converted_yaml)
      end
    end

-- 
Aaron Patterson
http://tenderlovemaking.com/

In This Thread