kpi 0.3.1 → 0.3.3
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/README.rdoc +2 -0
- data/app/models/kpi/report/base.rb +5 -20
- data/app/models/kpi/report/dynamic_definitions.rb +34 -0
- data/app/models/kpi/report/mail_delivery.rb +15 -0
- data/lib/generators/kpi/USAGE +8 -0
- data/lib/generators/kpi/install_generator.rb +14 -0
- data/lib/generators/kpi/kpi_generator.rb +8 -0
- data/lib/generators/kpi/templates/initializer.rb +11 -0
- data/lib/kpi/configuration.rb +22 -0
- data/lib/kpi.rb +2 -12
- data/spec/spec_helper.rb +3 -0
- metadata +13 -6
data/README.rdoc
CHANGED
@@ -70,9 +70,11 @@ To collect all statistics and send an email to you just call:
|
|
70
70
|
def title; "Your daily report"; end
|
71
71
|
# ...
|
72
72
|
end
|
73
|
+
* You can use Whenever gem to generate periodic reports
|
73
74
|
|
74
75
|
== Todo
|
75
76
|
|
77
|
+
* Generators for configuration and reports
|
76
78
|
* Database persistence - storing reports in different databases: PostgreSQL & Mongo prioritized
|
77
79
|
* Controllers & views allowing to review stored reports
|
78
80
|
* More tests ;)
|
@@ -1,28 +1,13 @@
|
|
1
1
|
module KPI
|
2
2
|
module Report
|
3
3
|
class Base
|
4
|
-
@@do_not_memoize = [:initialize, :collect!, :entries, :time, :title]
|
5
4
|
extend KPI::Report::SuppressMemoization
|
6
5
|
extend ActiveSupport::Memoizable
|
7
|
-
|
8
|
-
def self.method_added(name)
|
9
|
-
unless self.method_blacklisted?(name) || suppressed_memoization?
|
10
|
-
self.defined_kpis << name
|
11
|
-
suppress_memoization { memoize name }
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
def self.method_blacklisted?(name)
|
16
|
-
@@do_not_memoize.include?(name) || name =~ /_unmemoized_/
|
17
|
-
end
|
18
6
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
def self.collect_and_send!
|
24
|
-
KPI::Mailer.report(self.new.tap(&:collect!)).deliver
|
25
|
-
end
|
7
|
+
include KPI::Report::DynamicDefinitions
|
8
|
+
include KPI::Report::MailDelivery
|
9
|
+
|
10
|
+
blacklist :initialize, :collect!, :entries, :time, :title
|
26
11
|
|
27
12
|
def initialize(time=Time.now)
|
28
13
|
@time = time
|
@@ -31,7 +16,7 @@ module KPI
|
|
31
16
|
|
32
17
|
def collect!
|
33
18
|
self.class.defined_kpis.each {|kpi_method| send(kpi_method) }
|
34
|
-
self
|
19
|
+
self
|
35
20
|
end
|
36
21
|
|
37
22
|
def entries
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module KPI
|
2
|
+
module Report
|
3
|
+
module DynamicDefinitions
|
4
|
+
module ClassMethods
|
5
|
+
def method_added(name)
|
6
|
+
unless self.method_blacklisted?(name) || suppressed_memoization?
|
7
|
+
self.defined_kpis << name
|
8
|
+
suppress_memoization { memoize name }
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def method_blacklisted?(name)
|
13
|
+
not_kpi_methods.include?(name) || name =~ /_unmemoized_/
|
14
|
+
end
|
15
|
+
|
16
|
+
def blacklist(*methods)
|
17
|
+
not_kpi_methods.push *methods
|
18
|
+
end
|
19
|
+
|
20
|
+
def defined_kpis
|
21
|
+
@kpi_methods ||= []
|
22
|
+
end
|
23
|
+
|
24
|
+
def not_kpi_methods
|
25
|
+
@not_kpi_methods ||= []
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.included(base)
|
30
|
+
base.send(:extend, ClassMethods)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module KPI
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
4
|
+
namespace "kpi:install"
|
5
|
+
source_root File.expand_path('../templates', __FILE__)
|
6
|
+
desc "Creates a KPI initializer."
|
7
|
+
|
8
|
+
def copy_initializer
|
9
|
+
template "initializer.rb", "config/initializers/kpi.rb"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
@@ -0,0 +1,11 @@
|
|
1
|
+
KPI.configure do |c|
|
2
|
+
# Your application name
|
3
|
+
# It appears in email subjects and inside email body
|
4
|
+
c.app_name = "Your app name"
|
5
|
+
|
6
|
+
# "from" field of KPI emails
|
7
|
+
c.mail_from = "kpi@yourapp.com"
|
8
|
+
|
9
|
+
# "to" field of KPI emails
|
10
|
+
c.mail_to = "example@example.com"
|
11
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module KPI
|
2
|
+
module Configuration
|
3
|
+
def self.included(base)
|
4
|
+
base.class_eval do
|
5
|
+
|
6
|
+
mattr_accessor :app_name
|
7
|
+
@@app_name = "Your app"
|
8
|
+
|
9
|
+
mattr_accessor :mail_from
|
10
|
+
@@mail_from = "example@example.com"
|
11
|
+
|
12
|
+
mattr_accessor :mail_to
|
13
|
+
@@mail_to = "example@example.com"
|
14
|
+
|
15
|
+
def self.configure
|
16
|
+
yield self
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/kpi.rb
CHANGED
@@ -1,16 +1,6 @@
|
|
1
1
|
module KPI
|
2
2
|
require 'engine' if defined?(Rails) && Rails::VERSION::MAJOR == 3
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
mattr_accessor :mail_from
|
8
|
-
@@mail_from = "example@example.com"
|
9
|
-
|
10
|
-
mattr_accessor :mail_to
|
11
|
-
@@mail_to = "example@example.com"
|
12
|
-
|
13
|
-
def self.configure
|
14
|
-
yield self
|
15
|
-
end
|
4
|
+
require 'kpi/configuration'
|
5
|
+
include KPI::Configuration
|
16
6
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -9,8 +9,11 @@ require 'kpi'
|
|
9
9
|
# in ./support/ and its subdirectories.
|
10
10
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
11
11
|
|
12
|
+
require File.join(File.dirname(__FILE__), '..', 'lib/kpi/configuration')
|
12
13
|
require File.join(File.dirname(__FILE__), '..', 'app/models/kpi/entry')
|
14
|
+
require File.join(File.dirname(__FILE__), '..', 'app/models/kpi/report/dynamic_definitions')
|
13
15
|
require File.join(File.dirname(__FILE__), '..', 'app/models/kpi/report/suppress_memoization')
|
16
|
+
require File.join(File.dirname(__FILE__), '..', 'app/models/kpi/report/mail_delivery')
|
14
17
|
require File.join(File.dirname(__FILE__), '..', 'app/models/kpi/report/base')
|
15
18
|
require File.join(File.dirname(__FILE__), '..', 'app/mailers/kpi/mailer')
|
16
19
|
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: kpi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.3.
|
5
|
+
version: 0.3.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Artur Roszczyk
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-04-14 00:00:00 +02:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - ~>
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 3.0
|
23
|
+
version: "3.0"
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
26
|
version_requirements: *id001
|
@@ -31,7 +31,7 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - ~>
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 3.0
|
34
|
+
version: "3.0"
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: *id002
|
@@ -53,7 +53,7 @@ dependencies:
|
|
53
53
|
requirements:
|
54
54
|
- - ~>
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: 1.0
|
56
|
+
version: "1.0"
|
57
57
|
type: :development
|
58
58
|
prerelease: false
|
59
59
|
version_requirements: *id004
|
@@ -92,10 +92,17 @@ files:
|
|
92
92
|
- app/mailers/kpi/mailer.rb
|
93
93
|
- app/models/kpi/entry.rb
|
94
94
|
- app/models/kpi/report/base.rb
|
95
|
+
- app/models/kpi/report/dynamic_definitions.rb
|
96
|
+
- app/models/kpi/report/mail_delivery.rb
|
95
97
|
- app/models/kpi/report/suppress_memoization.rb
|
96
98
|
- app/views/kpi/mailer/report.html.erb
|
97
99
|
- lib/engine.rb
|
100
|
+
- lib/generators/kpi/USAGE
|
101
|
+
- lib/generators/kpi/install_generator.rb
|
102
|
+
- lib/generators/kpi/kpi_generator.rb
|
103
|
+
- lib/generators/kpi/templates/initializer.rb
|
98
104
|
- lib/kpi.rb
|
105
|
+
- lib/kpi/configuration.rb
|
99
106
|
- LICENSE.txt
|
100
107
|
- README.rdoc
|
101
108
|
- spec/models/kpi/report/base_spec.rb
|
@@ -114,7 +121,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
114
121
|
requirements:
|
115
122
|
- - ">="
|
116
123
|
- !ruby/object:Gem::Version
|
117
|
-
hash: -
|
124
|
+
hash: -1444204594839301290
|
118
125
|
segments:
|
119
126
|
- 0
|
120
127
|
version: "0"
|