sinmetrics 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data.tar.gz.sig +3 -0
 - data/Manifest +6 -0
 - data/README +33 -0
 - data/Rakefile +11 -0
 - data/lib/sinmetrics.rb +11 -0
 - data/lib/sinmetrics/kontagent.rb +126 -0
 - data/lib/sinmetrics/mixpanel.rb +94 -0
 - data/sinmetrics.gemspec +31 -0
 - metadata +95 -0
 - metadata.gz.sig +0 -0
 
    
        data.tar.gz.sig
    ADDED
    
    
    
        data/Manifest
    ADDED
    
    
    
        data/README
    ADDED
    
    | 
         @@ -0,0 +1,33 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            sinmetrics: simple sinatra metrics helpers
         
     | 
| 
      
 2 
     | 
    
         
            +
              (c) 2010 Luke Petre (lpetre)
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            === Usage
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              require 'sinmetrics'
         
     | 
| 
      
 7 
     | 
    
         
            +
              require 'sinatra'
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              mixpanel do
         
     | 
| 
      
 10 
     | 
    
         
            +
                token  '4579...cbb0'
         
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              get '/' do
         
     | 
| 
      
 14 
     | 
    
         
            +
                mp.log_event( 'play', @user.id)
         
     | 
| 
      
 15 
     | 
    
         
            +
                "hello world"
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            === Features
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            === Other Options
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            === Standalone Usage
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
              require 'sinmetrics'
         
     | 
| 
      
 25 
     | 
    
         
            +
              mp = MixPanel.new(
         
     | 
| 
      
 26 
     | 
    
         
            +
                :token  => '4579...cbb0',
         
     | 
| 
      
 27 
     | 
    
         
            +
              )
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              >> mp.log_event( 'play', 1234 )
         
     | 
| 
      
 30 
     | 
    
         
            +
              => 1
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            === Special Thanks
         
     | 
| 
      
 33 
     | 
    
         
            +
              This library is *heavily* inspired by sinbook, http://github.com/tmm1/sinbook
         
     | 
    
        data/Rakefile
    ADDED
    
    | 
         @@ -0,0 +1,11 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'rake'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'echoe'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            Echoe.new('sinmetrics', '0.0.1') do |p|
         
     | 
| 
      
 6 
     | 
    
         
            +
              p.description    = "Some metrics helpers for the Sinatra web framework"
         
     | 
| 
      
 7 
     | 
    
         
            +
              p.url            = "http://github.com/lpetre/sinmetrics"
         
     | 
| 
      
 8 
     | 
    
         
            +
              p.author         = "Luke Petre"
         
     | 
| 
      
 9 
     | 
    
         
            +
              p.email          = "lpetre@gmail.com"
         
     | 
| 
      
 10 
     | 
    
         
            +
              p.rdoc_pattern   = []
         
     | 
| 
      
 11 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/sinmetrics.rb
    ADDED
    
    
| 
         @@ -0,0 +1,126 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            begin
         
     | 
| 
      
 2 
     | 
    
         
            +
              require 'sinatra/base'
         
     | 
| 
      
 3 
     | 
    
         
            +
            rescue LoadError
         
     | 
| 
      
 4 
     | 
    
         
            +
              retry if require 'rubygems'
         
     | 
| 
      
 5 
     | 
    
         
            +
              raise
         
     | 
| 
      
 6 
     | 
    
         
            +
            end
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            module Sinatra
         
     | 
| 
      
 9 
     | 
    
         
            +
              require 'digest/md5'
         
     | 
| 
      
 10 
     | 
    
         
            +
              require 'net/http'
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              class KontagentObject
         
     | 
| 
      
 13 
     | 
    
         
            +
                @@version = 1
         
     | 
| 
      
 14 
     | 
    
         
            +
                def initialize app
         
     | 
| 
      
 15 
     | 
    
         
            +
                  if app.respond_to?(:options)
         
     | 
| 
      
 16 
     | 
    
         
            +
                    @app = app
         
     | 
| 
      
 17 
     | 
    
         
            +
                    [:api_key, :secret, :env].each do |var|
         
     | 
| 
      
 18 
     | 
    
         
            +
                      instance_variable_set("@#{var}", app.options.send("mixpanel_#{var}"))
         
     | 
| 
      
 19 
     | 
    
         
            +
                    end
         
     | 
| 
      
 20 
     | 
    
         
            +
                  else
         
     | 
| 
      
 21 
     | 
    
         
            +
                    [:api_key, :secret, :env, :request].each do |var|
         
     | 
| 
      
 22 
     | 
    
         
            +
                      instance_variable_set("@#{var}", app[var]) if app.has_key?(var)
         
     | 
| 
      
 23 
     | 
    
         
            +
                    end
         
     | 
| 
      
 24 
     | 
    
         
            +
                  end
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                attr_reader :app
         
     | 
| 
      
 28 
     | 
    
         
            +
                attr_accessor :api_key, :secret, :env
         
     | 
| 
      
 29 
     | 
    
         
            +
                def request *args
         
     | 
| 
      
 30 
     | 
    
         
            +
                  if @app
         
     | 
| 
      
 31 
     | 
    
         
            +
                    @app.options.kontagent_request *args
         
     | 
| 
      
 32 
     | 
    
         
            +
                  else
         
     | 
| 
      
 33 
     | 
    
         
            +
                    @request.call *args
         
     | 
| 
      
 34 
     | 
    
         
            +
                  end
         
     | 
| 
      
 35 
     | 
    
         
            +
                end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                class APIProxy
         
     | 
| 
      
 38 
     | 
    
         
            +
                  Types = %w[ 
         
     | 
| 
      
 39 
     | 
    
         
            +
                    ins inr
         
     | 
| 
      
 40 
     | 
    
         
            +
                    nts ntr
         
     | 
| 
      
 41 
     | 
    
         
            +
                    nes nei
         
     | 
| 
      
 42 
     | 
    
         
            +
                    pst psr
         
     | 
| 
      
 43 
     | 
    
         
            +
                    apa apr
         
     | 
| 
      
 44 
     | 
    
         
            +
                    ucc
         
     | 
| 
      
 45 
     | 
    
         
            +
                    pgr
         
     | 
| 
      
 46 
     | 
    
         
            +
                    cpu
         
     | 
| 
      
 47 
     | 
    
         
            +
                    gci
         
     | 
| 
      
 48 
     | 
    
         
            +
                    mtu
         
     | 
| 
      
 49 
     | 
    
         
            +
                  ]
         
     | 
| 
      
 50 
     | 
    
         
            +
                end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                APIProxy::Types.each do |n|
         
     | 
| 
      
 53 
     | 
    
         
            +
                  class_eval %[
         
     | 
| 
      
 54 
     | 
    
         
            +
                    def #{n}_url args
         
     | 
| 
      
 55 
     | 
    
         
            +
                      make_url '#{n}', args
         
     | 
| 
      
 56 
     | 
    
         
            +
                    end
         
     | 
| 
      
 57 
     | 
    
         
            +
                    def #{n} args = {}
         
     | 
| 
      
 58 
     | 
    
         
            +
                      request( #{n}_url( args ) ) unless env == :test
         
     | 
| 
      
 59 
     | 
    
         
            +
                    end
         
     | 
| 
      
 60 
     | 
    
         
            +
                  ]
         
     | 
| 
      
 61 
     | 
    
         
            +
                end
         
     | 
| 
      
 62 
     | 
    
         
            +
                
         
     | 
| 
      
 63 
     | 
    
         
            +
                def base_url
         
     | 
| 
      
 64 
     | 
    
         
            +
                  case env
         
     | 
| 
      
 65 
     | 
    
         
            +
                  when :production ; 'http://api.geo.kontagent.net/api'
         
     | 
| 
      
 66 
     | 
    
         
            +
                  else ;             'http://api.test.kontagent.com/api'
         
     | 
| 
      
 67 
     | 
    
         
            +
                  end
         
     | 
| 
      
 68 
     | 
    
         
            +
                end
         
     | 
| 
      
 69 
     | 
    
         
            +
                
         
     | 
| 
      
 70 
     | 
    
         
            +
                def make_url method, args = {}
         
     | 
| 
      
 71 
     | 
    
         
            +
                  args = { :ts => Time.now.getgm.strftime("%Y-%m-%dT%H:%M:%S") }.merge(args)
         
     | 
| 
      
 72 
     | 
    
         
            +
                  sorted = args.map{ |k,v|
         
     | 
| 
      
 73 
     | 
    
         
            +
                                   next nil unless v
         
     | 
| 
      
 74 
     | 
    
         
            +
                                   next nil if k == :url_only
         
     | 
| 
      
 75 
     | 
    
         
            +
                                   "#{k}=" + case v
         
     | 
| 
      
 76 
     | 
    
         
            +
                                              when Array
         
     | 
| 
      
 77 
     | 
    
         
            +
                                                v.join('%2C')
         
     | 
| 
      
 78 
     | 
    
         
            +
                                              else
         
     | 
| 
      
 79 
     | 
    
         
            +
                                                v.to_s
         
     | 
| 
      
 80 
     | 
    
         
            +
                                              end
         
     | 
| 
      
 81 
     | 
    
         
            +
                                 }.compact.sort
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
                  sorted << "an_sig=" + Digest::MD5.hexdigest(sorted.join+self.secret)
         
     | 
| 
      
 84 
     | 
    
         
            +
                  query = sorted.map{|v| v.gsub('&', '%26').gsub(' ', '+')}.join('&')
         
     | 
| 
      
 85 
     | 
    
         
            +
                  "#{base_url}/v#{@@version}/#{api_key}/#{method}/?#{query}"
         
     | 
| 
      
 86 
     | 
    
         
            +
                end
         
     | 
| 
      
 87 
     | 
    
         
            +
              end
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
              module KontagentHelper
         
     | 
| 
      
 90 
     | 
    
         
            +
                def kontagent
         
     | 
| 
      
 91 
     | 
    
         
            +
                  env['kontagent.helper'] ||= KontagentObject.new(self)
         
     | 
| 
      
 92 
     | 
    
         
            +
                end
         
     | 
| 
      
 93 
     | 
    
         
            +
                
         
     | 
| 
      
 94 
     | 
    
         
            +
                alias kt kontagent
         
     | 
| 
      
 95 
     | 
    
         
            +
              end
         
     | 
| 
      
 96 
     | 
    
         
            +
              
         
     | 
| 
      
 97 
     | 
    
         
            +
              class KontagentSettings
         
     | 
| 
      
 98 
     | 
    
         
            +
                def initialize app, &blk
         
     | 
| 
      
 99 
     | 
    
         
            +
                  @app = app
         
     | 
| 
      
 100 
     | 
    
         
            +
                  @app.set :kontagent_env, @app.environment
         
     | 
| 
      
 101 
     | 
    
         
            +
                  @app.set :kontagent_request, Proc.new { |url| Net::HTTP.get( URI.parse(url) ) }
         
     | 
| 
      
 102 
     | 
    
         
            +
                  instance_eval &blk
         
     | 
| 
      
 103 
     | 
    
         
            +
                end
         
     | 
| 
      
 104 
     | 
    
         
            +
                %w[ api_key secret env request ].each do |param|
         
     | 
| 
      
 105 
     | 
    
         
            +
                  class_eval %[
         
     | 
| 
      
 106 
     | 
    
         
            +
                    def #{param} val, &blk
         
     | 
| 
      
 107 
     | 
    
         
            +
                      @app.set :kontagent_#{param}, val
         
     | 
| 
      
 108 
     | 
    
         
            +
                    end
         
     | 
| 
      
 109 
     | 
    
         
            +
                  ]
         
     | 
| 
      
 110 
     | 
    
         
            +
                end
         
     | 
| 
      
 111 
     | 
    
         
            +
              end
         
     | 
| 
      
 112 
     | 
    
         
            +
             
     | 
| 
      
 113 
     | 
    
         
            +
              module Kontagent
         
     | 
| 
      
 114 
     | 
    
         
            +
                def kontagent &blk
         
     | 
| 
      
 115 
     | 
    
         
            +
                  KontagentSettings.new(self, &blk)
         
     | 
| 
      
 116 
     | 
    
         
            +
                end
         
     | 
| 
      
 117 
     | 
    
         
            +
                
         
     | 
| 
      
 118 
     | 
    
         
            +
                def self.registered app
         
     | 
| 
      
 119 
     | 
    
         
            +
                  app.helpers KontagentHelper
         
     | 
| 
      
 120 
     | 
    
         
            +
                end
         
     | 
| 
      
 121 
     | 
    
         
            +
              end
         
     | 
| 
      
 122 
     | 
    
         
            +
              
         
     | 
| 
      
 123 
     | 
    
         
            +
              Application.register Kontagent  
         
     | 
| 
      
 124 
     | 
    
         
            +
            end
         
     | 
| 
      
 125 
     | 
    
         
            +
             
     | 
| 
      
 126 
     | 
    
         
            +
            Kontagent = Sinatra::KontagentObject
         
     | 
| 
         @@ -0,0 +1,94 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Sinatra
         
     | 
| 
      
 2 
     | 
    
         
            +
              require 'digest/md5'
         
     | 
| 
      
 3 
     | 
    
         
            +
              require 'base64'
         
     | 
| 
      
 4 
     | 
    
         
            +
              require 'net/http'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              class MixpanelObject
         
     | 
| 
      
 7 
     | 
    
         
            +
                @@version = 1
         
     | 
| 
      
 8 
     | 
    
         
            +
                def initialize app
         
     | 
| 
      
 9 
     | 
    
         
            +
                  if app.respond_to?(:options)
         
     | 
| 
      
 10 
     | 
    
         
            +
                    @app = app
         
     | 
| 
      
 11 
     | 
    
         
            +
                    [:api_key, :secret, :token].each do |var|
         
     | 
| 
      
 12 
     | 
    
         
            +
                      instance_variable_set("@#{var}", app.options.send("mixpanel_#{var}"))
         
     | 
| 
      
 13 
     | 
    
         
            +
                    end
         
     | 
| 
      
 14 
     | 
    
         
            +
                  else
         
     | 
| 
      
 15 
     | 
    
         
            +
                    [:api_key, :secret, :token, :request ].each do |var|
         
     | 
| 
      
 16 
     | 
    
         
            +
                      instance_variable_set("@#{var}", app[var]) if app.has_key?(var)
         
     | 
| 
      
 17 
     | 
    
         
            +
                    end
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                attr_reader :app
         
     | 
| 
      
 22 
     | 
    
         
            +
                attr_accessor :api_key, :secret, :token
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                def request *args
         
     | 
| 
      
 25 
     | 
    
         
            +
                  if @app
         
     | 
| 
      
 26 
     | 
    
         
            +
                    @app.options.mixpanel_request *args
         
     | 
| 
      
 27 
     | 
    
         
            +
                  else
         
     | 
| 
      
 28 
     | 
    
         
            +
                    @request.call *args
         
     | 
| 
      
 29 
     | 
    
         
            +
                  end
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
                
         
     | 
| 
      
 32 
     | 
    
         
            +
                def log_event(event, user_id, opts = {})      
         
     | 
| 
      
 33 
     | 
    
         
            +
                  options = {}
         
     | 
| 
      
 34 
     | 
    
         
            +
                  options['ip'] = @app.request.ip if @app
         
     | 
| 
      
 35 
     | 
    
         
            +
                  options['time'] = Time.now.to_i
         
     | 
| 
      
 36 
     | 
    
         
            +
                  options['token'] = token
         
     | 
| 
      
 37 
     | 
    
         
            +
                  options['distinct_id'] = user_id if user_id
         
     | 
| 
      
 38 
     | 
    
         
            +
                  opts.each do |key, value|
         
     | 
| 
      
 39 
     | 
    
         
            +
                    if [:step].include? key
         
     | 
| 
      
 40 
     | 
    
         
            +
                      options[key.to_s] = value.to_i
         
     | 
| 
      
 41 
     | 
    
         
            +
                    else
         
     | 
| 
      
 42 
     | 
    
         
            +
                      options[key.to_s] = value.to_s
         
     | 
| 
      
 43 
     | 
    
         
            +
                    end
         
     | 
| 
      
 44 
     | 
    
         
            +
                  end
         
     | 
| 
      
 45 
     | 
    
         
            +
                  
         
     | 
| 
      
 46 
     | 
    
         
            +
                  data = ::Base64.encode64( { 'event' => event, 'properties' => options }.to_json ).gsub(/\n/, '')
         
     | 
| 
      
 47 
     | 
    
         
            +
                  data = "#{data}&ip=1" if options.has_key? 'ip'
         
     | 
| 
      
 48 
     | 
    
         
            +
                  request "http://api.mixpanel.com/track/?data=#{data}"
         
     | 
| 
      
 49 
     | 
    
         
            +
                end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                def log_funnel(funnel_name, step_number, step_name, user_id, opts = {})
         
     | 
| 
      
 52 
     | 
    
         
            +
                  funnel_opts = opts.merge({:funnel => funnel_name, :step => step_number, :goal => step_name})
         
     | 
| 
      
 53 
     | 
    
         
            +
                  log_event("mp_funnel", user_id, funnel_opts)
         
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
              end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
              module MixpanelHelper
         
     | 
| 
      
 59 
     | 
    
         
            +
                def mixpanel
         
     | 
| 
      
 60 
     | 
    
         
            +
                  env['mixpanel.helper'] ||= MixpanelObject.new(self)
         
     | 
| 
      
 61 
     | 
    
         
            +
                end
         
     | 
| 
      
 62 
     | 
    
         
            +
                
         
     | 
| 
      
 63 
     | 
    
         
            +
                alias mp mixpanel
         
     | 
| 
      
 64 
     | 
    
         
            +
              end
         
     | 
| 
      
 65 
     | 
    
         
            +
              
         
     | 
| 
      
 66 
     | 
    
         
            +
              class MixpanelSettings
         
     | 
| 
      
 67 
     | 
    
         
            +
                def initialize app, &blk
         
     | 
| 
      
 68 
     | 
    
         
            +
                  @app = app
         
     | 
| 
      
 69 
     | 
    
         
            +
                  @app.set :mixpanel_request, Proc.new { |url| Net::HTTP.get(URI.parse(url)) }
         
     | 
| 
      
 70 
     | 
    
         
            +
                  instance_eval &blk
         
     | 
| 
      
 71 
     | 
    
         
            +
                end
         
     | 
| 
      
 72 
     | 
    
         
            +
                %w[ api_key secret token request ].each do |param|
         
     | 
| 
      
 73 
     | 
    
         
            +
                  class_eval %[
         
     | 
| 
      
 74 
     | 
    
         
            +
                    def #{param} val, &blk
         
     | 
| 
      
 75 
     | 
    
         
            +
                      @app.set :mixpanel_#{param}, val
         
     | 
| 
      
 76 
     | 
    
         
            +
                    end
         
     | 
| 
      
 77 
     | 
    
         
            +
                  ]
         
     | 
| 
      
 78 
     | 
    
         
            +
                end
         
     | 
| 
      
 79 
     | 
    
         
            +
              end
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
              module Mixpanel
         
     | 
| 
      
 82 
     | 
    
         
            +
                def mixpanel &blk
         
     | 
| 
      
 83 
     | 
    
         
            +
                  MixpanelSettings.new(self, &blk)
         
     | 
| 
      
 84 
     | 
    
         
            +
                end
         
     | 
| 
      
 85 
     | 
    
         
            +
                
         
     | 
| 
      
 86 
     | 
    
         
            +
                def self.registered app
         
     | 
| 
      
 87 
     | 
    
         
            +
                  app.helpers MixpanelHelper
         
     | 
| 
      
 88 
     | 
    
         
            +
                end
         
     | 
| 
      
 89 
     | 
    
         
            +
              end
         
     | 
| 
      
 90 
     | 
    
         
            +
              
         
     | 
| 
      
 91 
     | 
    
         
            +
              Application.register Mixpanel  
         
     | 
| 
      
 92 
     | 
    
         
            +
            end
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
            Mixpanel = Sinatra::MixpanelObject
         
     | 
    
        data/sinmetrics.gemspec
    ADDED
    
    | 
         @@ -0,0 +1,31 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # -*- encoding: utf-8 -*-
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Gem::Specification.new do |s|
         
     | 
| 
      
 4 
     | 
    
         
            +
              s.name = %q{sinmetrics}
         
     | 
| 
      
 5 
     | 
    
         
            +
              s.version = "0.0.1"
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
         
     | 
| 
      
 8 
     | 
    
         
            +
              s.authors = ["Luke Petre"]
         
     | 
| 
      
 9 
     | 
    
         
            +
              s.cert_chain = ["/Users/luke/.gem/trust/gem-public_cert.pem"]
         
     | 
| 
      
 10 
     | 
    
         
            +
              s.date = %q{2010-04-05}
         
     | 
| 
      
 11 
     | 
    
         
            +
              s.description = %q{Some metrics helpers for the Sinatra web framework}
         
     | 
| 
      
 12 
     | 
    
         
            +
              s.email = %q{lpetre@gmail.com}
         
     | 
| 
      
 13 
     | 
    
         
            +
              s.files = ["Manifest", "README", "Rakefile", "lib/sinmetrics.rb", "lib/sinmetrics/kontagent.rb", "lib/sinmetrics/mixpanel.rb", "sinmetrics.gemspec"]
         
     | 
| 
      
 14 
     | 
    
         
            +
              s.homepage = %q{http://github.com/lpetre/sinmetrics}
         
     | 
| 
      
 15 
     | 
    
         
            +
              s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Sinmetrics", "--main", "README"]
         
     | 
| 
      
 16 
     | 
    
         
            +
              s.require_paths = ["lib"]
         
     | 
| 
      
 17 
     | 
    
         
            +
              s.rubyforge_project = %q{sinmetrics}
         
     | 
| 
      
 18 
     | 
    
         
            +
              s.rubygems_version = %q{1.3.6}
         
     | 
| 
      
 19 
     | 
    
         
            +
              s.signing_key = %q{/Users/luke/.gem/trust/gem-private_key.pem}
         
     | 
| 
      
 20 
     | 
    
         
            +
              s.summary = %q{Some metrics helpers for the Sinatra web framework}
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
              if s.respond_to? :specification_version then
         
     | 
| 
      
 23 
     | 
    
         
            +
                current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
         
     | 
| 
      
 24 
     | 
    
         
            +
                s.specification_version = 3
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
         
     | 
| 
      
 27 
     | 
    
         
            +
                else
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
              else
         
     | 
| 
      
 30 
     | 
    
         
            +
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,95 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification 
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: sinmetrics
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version 
         
     | 
| 
      
 4 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 5 
     | 
    
         
            +
              segments: 
         
     | 
| 
      
 6 
     | 
    
         
            +
              - 0
         
     | 
| 
      
 7 
     | 
    
         
            +
              - 0
         
     | 
| 
      
 8 
     | 
    
         
            +
              - 1
         
     | 
| 
      
 9 
     | 
    
         
            +
              version: 0.0.1
         
     | 
| 
      
 10 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 11 
     | 
    
         
            +
            authors: 
         
     | 
| 
      
 12 
     | 
    
         
            +
            - Luke Petre
         
     | 
| 
      
 13 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 14 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 15 
     | 
    
         
            +
            cert_chain: 
         
     | 
| 
      
 16 
     | 
    
         
            +
            - |
         
     | 
| 
      
 17 
     | 
    
         
            +
              -----BEGIN CERTIFICATE-----
         
     | 
| 
      
 18 
     | 
    
         
            +
              MIIDLjCCAhagAwIBAgIBADANBgkqhkiG9w0BAQUFADA9MQ8wDQYDVQQDDAZscGV0
         
     | 
| 
      
 19 
     | 
    
         
            +
              cmUxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2NvbTAe
         
     | 
| 
      
 20 
     | 
    
         
            +
              Fw0xMDA0MDUxNTAwNThaFw0xMTA0MDUxNTAwNThaMD0xDzANBgNVBAMMBmxwZXRy
         
     | 
| 
      
 21 
     | 
    
         
            +
              ZTEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYDY29tMIIB
         
     | 
| 
      
 22 
     | 
    
         
            +
              IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0/zvDJ9OhFdwBVMTgVY5tXhG
         
     | 
| 
      
 23 
     | 
    
         
            +
              EXeHUAJsXSknjds2eD8pgAues2EXHdTHjj1HTxeIuYP1Q6EG6tVQoajwj+ifgtBZ
         
     | 
| 
      
 24 
     | 
    
         
            +
              cbs7F1KfixyxnVDXskhf+JfT8hIFZSIdOZ+PhGXcRKsrgbuf+0XR1UXGQu/lYsIh
         
     | 
| 
      
 25 
     | 
    
         
            +
              Ofj9u0ssYfT/AuAwaBqkSPHWVYV3s/8cmoaWf/EMl8tsgdTdCS0GqceyCFSDClGE
         
     | 
| 
      
 26 
     | 
    
         
            +
              Mn8I/x3yPKcwBsWlU0rnEQ65D++2C44CW3P9RO4Td6tqtyhDapeSOhHCQFOEMu6s
         
     | 
| 
      
 27 
     | 
    
         
            +
              mCSFTcjuuuTT1nt/v5wox0sV70FD2afr3cBN+QQUHah4hjVU1RoTx3ucm5++5wID
         
     | 
| 
      
 28 
     | 
    
         
            +
              AQABozkwNzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUM1t89+b4
         
     | 
| 
      
 29 
     | 
    
         
            +
              vHmERgzN5XEWhaYPqs8wDQYJKoZIhvcNAQEFBQADggEBAHWF1oZuT7QSuWb5uUMT
         
     | 
| 
      
 30 
     | 
    
         
            +
              wC0EcYb1PFqjUrq0VUvZLJYZGpcw3cpAJvjW4S/B3bOI7l5Vr8P+PK3uIPVz3lNz
         
     | 
| 
      
 31 
     | 
    
         
            +
              sKrqLRgbeQZ8BHR1qiLLSnx2Jt7o8R3P1iFp2lOYc8jFTRnHNzb7kn1uSAhoJwWB
         
     | 
| 
      
 32 
     | 
    
         
            +
              rZFMRQmdK+6KrtC9wJMg+4i38yfHJZPwLnSYEBUz6OBqR8VL2qRPGDyOIdYQ5y3X
         
     | 
| 
      
 33 
     | 
    
         
            +
              hNJb+hNnJbo0z3KDO3krl8ey+7pNf5c5hokQS8xNuxc5/+3Nla6rGSEXdhYuUSE7
         
     | 
| 
      
 34 
     | 
    
         
            +
              1RC0WSSpIC7Zgezv4Acajto6LdnWMmPtM8d8KeD9IWOAD4NlL3wuzMcfId0IkBiq
         
     | 
| 
      
 35 
     | 
    
         
            +
              Q3o=
         
     | 
| 
      
 36 
     | 
    
         
            +
              -----END CERTIFICATE-----
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
            date: 2010-04-05 00:00:00 +01:00
         
     | 
| 
      
 39 
     | 
    
         
            +
            default_executable: 
         
     | 
| 
      
 40 
     | 
    
         
            +
            dependencies: []
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
            description: Some metrics helpers for the Sinatra web framework
         
     | 
| 
      
 43 
     | 
    
         
            +
            email: lpetre@gmail.com
         
     | 
| 
      
 44 
     | 
    
         
            +
            executables: []
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
            files: 
         
     | 
| 
      
 51 
     | 
    
         
            +
            - Manifest
         
     | 
| 
      
 52 
     | 
    
         
            +
            - README
         
     | 
| 
      
 53 
     | 
    
         
            +
            - Rakefile
         
     | 
| 
      
 54 
     | 
    
         
            +
            - lib/sinmetrics.rb
         
     | 
| 
      
 55 
     | 
    
         
            +
            - lib/sinmetrics/kontagent.rb
         
     | 
| 
      
 56 
     | 
    
         
            +
            - lib/sinmetrics/mixpanel.rb
         
     | 
| 
      
 57 
     | 
    
         
            +
            - sinmetrics.gemspec
         
     | 
| 
      
 58 
     | 
    
         
            +
            has_rdoc: true
         
     | 
| 
      
 59 
     | 
    
         
            +
            homepage: http://github.com/lpetre/sinmetrics
         
     | 
| 
      
 60 
     | 
    
         
            +
            licenses: []
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 63 
     | 
    
         
            +
            rdoc_options: 
         
     | 
| 
      
 64 
     | 
    
         
            +
            - --line-numbers
         
     | 
| 
      
 65 
     | 
    
         
            +
            - --inline-source
         
     | 
| 
      
 66 
     | 
    
         
            +
            - --title
         
     | 
| 
      
 67 
     | 
    
         
            +
            - Sinmetrics
         
     | 
| 
      
 68 
     | 
    
         
            +
            - --main
         
     | 
| 
      
 69 
     | 
    
         
            +
            - README
         
     | 
| 
      
 70 
     | 
    
         
            +
            require_paths: 
         
     | 
| 
      
 71 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 72 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 73 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 74 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 75 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 76 
     | 
    
         
            +
                  segments: 
         
     | 
| 
      
 77 
     | 
    
         
            +
                  - 0
         
     | 
| 
      
 78 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
      
 79 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 80 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 81 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 82 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 83 
     | 
    
         
            +
                  segments: 
         
     | 
| 
      
 84 
     | 
    
         
            +
                  - 1
         
     | 
| 
      
 85 
     | 
    
         
            +
                  - 2
         
     | 
| 
      
 86 
     | 
    
         
            +
                  version: "1.2"
         
     | 
| 
      
 87 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
            rubyforge_project: sinmetrics
         
     | 
| 
      
 90 
     | 
    
         
            +
            rubygems_version: 1.3.6
         
     | 
| 
      
 91 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 92 
     | 
    
         
            +
            specification_version: 3
         
     | 
| 
      
 93 
     | 
    
         
            +
            summary: Some metrics helpers for the Sinatra web framework
         
     | 
| 
      
 94 
     | 
    
         
            +
            test_files: []
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
    
        metadata.gz.sig
    ADDED
    
    | 
         Binary file 
     |