Sha256: 7f2cc94036888d23f8329efdf2cc6555bec1936e6b90d33528c729370cb54328

Contents?: true

Size: 665 Bytes

Versions: 12

Compression:

Stored size: 665 Bytes

Contents

require 'raindrops'

module Stats
	class MyStruct < Raindrops::Struct
		def self.new(*members)
			klass = super(*members)

			str = ''
			# add support to increment by more than 1
			members.map { |x| x.to_sym }.each_with_index do |member, i|
				str << "def incr_#{member}(v = 1); @raindrops.incr(#{i}, v); end; "
				str << "def decr_#{member}(v = 1); @raindrops.decr(#{i}, v); end; "
			end

			klass.class_eval(str)
			klass
		end
	end

	def def_stats(*stat_names)
		@@local_stats ||= {}
		stats_class = eval "MyStruct.new(#{stat_names.map{|s| ":#{s.to_s}"}.join(', ')})"
		@@local_stats[self] = stats_class.new
	end

	def stats
		@@local_stats[self]
	end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
unicorn-cuba-base-1.6.0 lib/unicorn-cuba-base/stats.rb
unicorn-cuba-base-1.5.0 lib/unicorn-cuba-base/stats.rb
unicorn-cuba-base-1.4.1 lib/unicorn-cuba-base/stats.rb
unicorn-cuba-base-1.4.0 lib/unicorn-cuba-base/stats.rb
unicorn-cuba-base-1.3.0 lib/unicorn-cuba-base/stats.rb
unicorn-cuba-base-1.2.2 lib/unicorn-cuba-base/stats.rb
unicorn-cuba-base-1.2.1 lib/unicorn-cuba-base/stats.rb
unicorn-cuba-base-1.2.0 lib/unicorn-cuba-base/stats.rb
unicorn-cuba-base-1.1.2 lib/unicorn-cuba-base/stats.rb
unicorn-cuba-base-1.1.1 lib/unicorn-cuba-base/stats.rb
unicorn-cuba-base-1.1.0 lib/unicorn-cuba-base/stats.rb
unicorn-cuba-base-1.0.0 lib/unicorn-cuba-base/stats.rb