Sha256: 24b5f57e28630e370d5c2bc30399a3346edb70eb181efff0bcca801885aba340

Contents?: true

Size: 962 Bytes

Versions: 27

Compression:

Stored size: 962 Bytes

Contents

module Interpol
  module ConfigurationRuby18Extensions
    def deserialized_hash_from(file)
      YAML.load(yaml_content_for file).tap do |yaml|
        if bad_class = bad_deserialized_yaml(yaml)
          raise ConfigurationError.new \
            "Received an error while loading YAML from #{file}: \"" +
            "Got object of type: #{bad_class}\"\n If you are using YAML merge keys " +
            "to declare shared types, you must configure endpoint_definition_merge_key_files " +
            "before endpoint_definition_files."
        end
      end
    end

    # returns nil if the YAML has been only partially deserialized by Syck
    # and there are YAML::Syck objects.
    def bad_deserialized_yaml(yaml)
      if [Hash, Array].include? yaml.class
        yaml.map { |elem| bad_deserialized_yaml(elem) }.compact.first
      elsif yaml.class.name =~ /YAML::Syck::/
        yaml.class.name # Bad!
      else
        nil
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
interpol-0.9.0 lib/interpol/configuration_ruby_18_extensions.rb
interpol-0.8.1 lib/interpol/configuration_ruby_18_extensions.rb
interpol-0.8.0 lib/interpol/configuration_ruby_18_extensions.rb
interpol-0.7.3 lib/interpol/configuration_ruby_18_extensions.rb
interpol-0.7.2 lib/interpol/configuration_ruby_18_extensions.rb
interpol-0.7.1 lib/interpol/configuration_ruby_18_extensions.rb
interpol-0.7.0 lib/interpol/configuration_ruby_18_extensions.rb
interpol-0.6.0 lib/interpol/configuration_ruby_18_extensions.rb
interpol-0.5.0 lib/interpol/configuration_ruby_18_extensions.rb
interpol-0.4.3 lib/interpol/configuration_ruby_18_extensions.rb
interpol-0.4.2 lib/interpol/configuration_ruby_18_extensions.rb
interpol-0.4.1 lib/interpol/configuration_ruby_18_extensions.rb
interpol-0.4.0 lib/interpol/configuration_ruby_18_extensions.rb
interpol-0.3.6 lib/interpol/configuration_ruby_18_extensions.rb
interpol-0.3.5 lib/interpol/configuration_ruby_18_extensions.rb
interpol-0.3.4 lib/interpol/configuration_ruby_18_extensions.rb
interpol-0.3.3 lib/interpol/configuration_ruby_18_extensions.rb
interpol-0.3.2 lib/interpol/configuration_ruby_18_extensions.rb
interpol-0.3.1 lib/interpol/configuration_ruby_18_extensions.rb
interpol-0.3.0 lib/interpol/configuration_ruby_18_extensions.rb