Sha256: 17d408fd729c9da67f24bdc5bfe0bd948620fc8d280be69de77d51be33b7686c

Contents?: true

Size: 1.27 KB

Versions: 4

Compression:

Stored size: 1.27 KB

Contents

%w{
  accepts_endpoint
  endpoint
  endpoint_builder
}.each { |f| require File.join(File.dirname(__FILE__),f) }

class URL::Service
  INHERITED_INSTANCE_VARIABLES = {:@base_url=>:dup}
  extend AcceptsEndpoint
  class << self
    attr_accessor :config
    def set_url url
      unless url.is_a?(URL)
        url = URL.new(url)
      end
      @base_url = url
      self
    end

    def inherited(subclass)
      super


      if defined?(Rails) && File.exist?(Rails.root+'config/services.yml')
        self.config ||= YAML.load_file(Rails.root+'config/services.yml')[Rails.env] rescue nil

        if config
          target_name = subclass.to_s.demodulize.underscore
          service_url = config[target_name]||config[target_name.sub(/_service$/,'')]
        end
      end

      if service_url
        subclass.set_url service_url
      end

      ivs = subclass.instance_variables.collect{|x| x.to_s}
      INHERITED_INSTANCE_VARIABLES.each do |iv,dup|
        next if ivs.include?(iv.to_s)
        sup_class_value = instance_variable_get(iv)
        sup_class_value = sup_class_value.dup if dup == :dup && sup_class_value
        subclass.instance_variable_set(iv, sup_class_value)
      end
    end

  end

end

class << URL
  def Service url
    Class.new(URL::Service).set_url(url)
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
grape-extra_validators-1.0.0 vendor/bundle/ruby/2.4.0/gems/url-0.3.2/lib/url/service.rb
url-0.3.2 lib/url/service.rb
url-0.3.1 lib/url/service.rb
url-0.3.0 lib/url/service.rb