Sha256: 987ba0abae8a782212a05c9e1ac31fd937cc7a3bef54b681bacfab2d63cc5bb2

Contents?: true

Size: 1.48 KB

Versions: 1

Compression:

Stored size: 1.48 KB

Contents

Dir.glob(File.dirname(__FILE__)+'/analytical/*.rb').each do |f|
  require f
end

module Analytical

  # any method placed here will apply to ActionController::Base
  def analytical(options={})
    send :include, InstanceMethods
    send :helper_method, :analytical
    send :cattr_accessor, :analytical_options

    self.analytical_options = options.reverse_merge({
      :modules=>[],
      :development_modules=>[:console],
      :disable_if=>Proc.new { !Rails.env.production? },
    })

    config_options = {}
    File.open("#{RAILS_ROOT}/config/analytical.yml") do |f|
      config_options = YAML::load(ERB.new(f.read).result).symbolize_keys
      config_options.each do |k,v|
        config_options[k] = v.symbolize_keys
      end
    end if File.exists?("#{RAILS_ROOT}/config/analytical.yml")

    self.analytical_options = self.analytical_options.merge config_options

    if self.analytical_options[:disable_if].call
      self.analytical_options[:modules] = self.analytical_options[:development_modules]
    end
    self.analytical_options[:modules].each do |m|
      Analytical::Api.send :include, "Analytical::#{m.to_s.camelize}".constantize
    end
  end

  module InstanceMethods
    # any method placed here will apply to instances

    def analytical
      options = self.class.analytical_options.merge({
        :ssl => request.ssl?
      })
      @analytical ||= Analytical::Api.new options
    end
  end

end

if defined?(ActionController::Base)
  ActionController::Base.extend Analytical
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
analytical-0.3.0 lib/analytical.rb