diff options
Diffstat (limited to 'lib/yaml.rb')
| -rw-r--r-- | lib/yaml.rb | 66 |
1 files changed, 24 insertions, 42 deletions
diff --git a/lib/yaml.rb b/lib/yaml.rb index f9f8e6d665..c6f0f89fd2 100644 --- a/lib/yaml.rb +++ b/lib/yaml.rb @@ -1,62 +1,35 @@ -## -# The YAML module is an alias of Psych, the YAML engine for Ruby. +# frozen_string_literal: false begin require 'psych' rescue LoadError - warn "#{caller[0]}:" - warn "It seems your ruby installation is missing psych (for YAML output)." - warn "To eliminate this warning, please install libyaml and reinstall your ruby." + case RUBY_ENGINE + when 'jruby' + warn "The Psych YAML extension failed to load.\n" \ + "Check your env for conflicting versions of SnakeYAML\n" \ + "See https://github.com/jruby/jruby/wiki/FAQs#why-does-the-psych-yaml-extension-fail-to-load-in-my-environment", + uplevel: 1 + else + warn "It seems your ruby installation is missing psych (for YAML output).\n" \ + "To eliminate this warning, please install libyaml and reinstall your ruby.\n", + uplevel: 1 + end raise end YAML = Psych # :nodoc: -module Psych # :nodoc: - # For compatibility, deprecated - class EngineManager # :nodoc: - attr_reader :yamler # :nodoc: - - def initialize # :nodoc: - @yamler = 'psych' - end - - def syck? # :nodoc: - false - end - - # Psych is always used and this method has no effect. - # - # This method is still present for compatibility. - # - # You may still use the Syck engine by installing - # the 'syck' gem and using the Syck constant. - def yamler= engine # :nodoc: - case engine - when 'syck' then warn "syck has been removed, psych is used instead" - when 'psych' then @yamler = 'psych' - else - raise(ArgumentError, "bad engine") - end - - engine - end - end - - ENGINE = EngineManager.new # :nodoc: -end - # YAML Ain't Markup Language # # This module provides a Ruby interface for data serialization in YAML format. # -# The underlying implementation is the libyaml wrapper Psych. +# The YAML module is an alias of Psych, the YAML engine for Ruby. # # == Usage # # Working with YAML can be very simple, for example: # -# require 'yaml' # STEP ONE, REQUIRE YAML! +# require 'yaml' # # Parse a YAML string # YAML.load("--- foo") #=> "foo" # @@ -64,6 +37,9 @@ end # YAML.dump("foo") # => "--- foo\n...\n" # { :a => 'b'}.to_yaml # => "---\n:a: b\n" # +# As the implementation is provided by the Psych library, detailed documentation +# can be found in that library's docs (also part of standard library). +# # == Security # # Do not use YAML to load untrusted data. Doing so is unsafe and could allow @@ -72,7 +48,7 @@ end # # == History # -# Syck was the original for YAML implementation in Ruby's standard library +# Syck was the original YAML implementation in Ruby's standard library # developed by why the lucky stiff. # # You can still use Syck, if you prefer, for parsing and emitting YAML, but you @@ -85,5 +61,11 @@ end # # For more advanced details on the implementation see Psych, and also check out # http://yaml.org for spec details and other helpful information. +# +# Psych is maintained by Aaron Patterson on github: https://github.com/ruby/psych +# +# Syck can also be found on github: https://github.com/ruby/syck module YAML + # The version of YAML wrapper + LOADER_VERSION = "0.4.0" end |
