summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/rubygems/package/old.rb2
-rw-r--r--lib/rubygems/specification.rb3
2 files changed, 3 insertions, 2 deletions
diff --git a/lib/rubygems/package/old.rb b/lib/rubygems/package/old.rb
index d74753fa90..31c4111d33 100644
--- a/lib/rubygems/package/old.rb
+++ b/lib/rubygems/package/old.rb
@@ -145,7 +145,7 @@ class Gem::Package::Old < Gem::Package
yaml_error = if RUBY_VERSION < '1.9' then
YAML::ParseError
- elsif YAML::ENGINE.yamler == 'syck' then
+ elsif YAML.const_defined?(:ENGINE) && YAML::ENGINE.yamler == 'syck' then
YAML::ParseError
else
YAML::SyntaxError
diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb
index f4e609a5eb..d760ab4a83 100644
--- a/lib/rubygems/specification.rb
+++ b/lib/rubygems/specification.rb
@@ -2359,7 +2359,8 @@ class Gem::Specification < Gem::BasicSpecification
end
def to_yaml(opts = {}) # :nodoc:
- if YAML.const_defined?(:ENGINE) && !YAML::ENGINE.syck? then
+ if (YAML.const_defined?(:ENGINE) && !YAML::ENGINE.syck?) ||
+ (defined?(Psych) && YAML == Psych) then
# Because the user can switch the YAML engine behind our
# back, we have to check again here to make sure that our
# psych code was properly loaded, and load it if not.