module GridRest

Constants

RESERVED_REQUEST_PARAMETERS

Public Class Methods

default_parameters(params, type = :global, namespace = :default) click to toggle source
# File lib/grid_rest.rb, line 27
def self.default_parameters(params, type = :global, namespace = :default)
  additional_parameters[namespace][type].update(params)
end
extend_class(klass) click to toggle source
# File lib/grid_rest.rb, line 31
def self.extend_class(klass)
  klass.send(:extend, GridRestExtensions)
  self.grid_config.namespaces.keys.each do |k|
    klass.send(:class_eval, "class << self; #{namespace_methods(k)}; end")
  end
end
include_in(klass) click to toggle source
# File lib/grid_rest.rb, line 20
def self.include_in(klass)
  klass.send(:include, GridRestExtensions)
  self.grid_config.namespaces.keys.each do |k|
    klass.send(:class_eval, namespace_methods(k))
  end
end
load_config!() click to toggle source

Very important method. This will set the appropriate settings for the current rails environment and appends this system to the specified classes

# File lib/grid_rest.rb, line 60
def self.load_config!
  config_path = File.join(Rails.root, 'config', 'grid_rest.yml')
  raise "File #{config_path} does not exist" unless File.exist?(config_path)
  h = YAML::load_file(config_path) rescue nil
  raise "Config file #{config_path} could not be parsed" unless h
  raise "Config file #{config_path} needs an environment" unless h[Rails.env]
  self.grid_config.namespaces = HashWithIndifferentAccess.new unless self.grid_config.namespaces.is_a?(Hash)
  h[Rails.env].each do |k, v|
    if v.is_a?(Hash)
      self.grid_config.namespaces[k.to_sym] = HashWithIndifferentAccess.new(v)
      self.additional_parameters[k.to_sym] = self.additional_parameters[:default].deep_dup # Copy default structure
    else
      self.grid_config[k.to_sym] = v
    end
  end

  # Now extend/include in configured classes
  for inclusion in Array.wrap(h['include_in'])
    self.include_in inclusion.constantize
  end
  for extension in Array.wrap(h['extend'])
    self.extend_class extension.constantize
  end
end
namespace_methods(namespace) click to toggle source
# File lib/grid_rest.rb, line 37
  def self.namespace_methods(namespace)
    expand_str = <<-END
      def #{namespace}_get(url, rparams = {})
        grid_rest_get(url, rparams.merge(:grid_rest_namespace => '#{namespace}'))
      end
      def #{namespace}_post(url, rparams = {})
        grid_rest_post(url, rparams.merge(:grid_rest_namespace => '#{namespace}'))
      end
      def #{namespace}_put(url, rparams = {})
        grid_rest_put(url, rparams.merge(:grid_rest_namespace => '#{namespace}'))
      end
      def #{namespace}_delete(url, rparams = {})
        grid_rest_delete(url, rparams.merge(:grid_rest_namespace => '#{namespace}'))
      end
      def #{namespace}_default_parameters(params, request_types = :global)
        set_namespaced_default_grid_rest_parameters(:#{namespace}, params, request_types)
      end
      alias_method :set_#{namespace}_default_parameters, :#{namespace}_default_parameters
    END
  end