summaryrefslogtreecommitdiff
path: root/lib/yaml.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/yaml.rb')
-rw-r--r--lib/yaml.rb66
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