best_boy 2.2.0 → 2.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: df256db90741885d7f20f019b73c86e8f851fefd
4
- data.tar.gz: ae53aea37dfaead5373d31a14281eeedfa59f34d
3
+ metadata.gz: d1ce44945739f534f6c56910503f9f0b408955d0
4
+ data.tar.gz: 39836bfe40b0ce0e2acf1aa3ae33221763b95ea6
5
5
  SHA512:
6
- metadata.gz: 9ad46cda0b5953f853af5d3797932510d8f299c3e2b4cc035f24d0a9f1790da9d340c5a0cbfaa59fea3c70bf96ef185a6e9784825ef5bbc96d27707062aaa0ab
7
- data.tar.gz: 1420badd4a1bac8e586d1ea7362af3fea44a18543c539dfc76ce766af58336fe72527e97a0ac55edc79260dcc318c6b1baee47165427d2f6fe3662f321a0de63
6
+ metadata.gz: b211c7f6f6b6cb1135415d5a50d3f4f674a7d4f96a7de9087cd994d04610455722eecab5b7a8ee9646959ac5ac7e87828eaff757b673000a0bdf6403985739c8
7
+ data.tar.gz: 45d8ece941242fdb99260083e9672b3dc45de514c0d7729e91e49124e81037c777d14c29d8a03fa68113400c2dbdd847811c7e5129d562cd8a88570d533dbdf7
data/README.md CHANGED
@@ -3,6 +3,7 @@ best_boy
3
3
  [![Build Status](https://secure.travis-ci.org/Absolventa/best_boy.png?branch=master)](https://secure.travis-ci.org/Absolventa/best_boy)
4
4
  [![Dependency Status](https://gemnasium.com/Absolventa/best_boy.png)](https://gemnasium.com/Absolventa/best_boy)
5
5
  [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/Absolventa/best_boy)
6
+ [![best_boy API Documentation](https://www.omniref.com/ruby/gems/best_boy.png)](https://www.omniref.com/ruby/gems/best_boy)
6
7
 
7
8
  A simple event driven logging for ActiveRecord models.
8
9
 
@@ -61,12 +62,14 @@ Run the migration
61
62
 
62
63
  Changelog
63
64
  ---------
65
+ #### 2.2.1
66
+ * flexibilized report creation method to create reports for a specific date
67
+
64
68
  #### 2.2.0
65
69
  * Updated dependencies for rspec and kaminari
66
70
  * Make recover_report_history rake task a noop for no previously tracked BestBoyEvents
67
-
68
- #### 2.1.4
69
71
  * Bugfix for report recovery rake task
72
+ * use appraisal for testing against different gemsets and Ruby versions
70
73
 
71
74
  #### 2.1.3
72
75
  * Compatible with Rails 4.1
@@ -17,6 +17,7 @@ module BestBoy
17
17
  initializer 'best_boy.model' do |app|
18
18
  if BestBoy.orm == :active_record
19
19
  require "best_boy/models/active_record/best_boy/obeys_test_mode.rb"
20
+ require "best_boy/models/active_record/best_boy/reporting.rb"
20
21
  require "best_boy/models/active_record/best_boy_event.rb"
21
22
  require "best_boy/models/active_record/best_boy/eventable.rb"
22
23
  require "best_boy/models/active_record/best_boy/day_report.rb"
@@ -2,6 +2,7 @@ module BestBoy
2
2
  class DayReport < ActiveRecord::Base
3
3
 
4
4
  include BestBoy::ObeysTestMode
5
+ include BestBoy::Reporting
5
6
 
6
7
  # db configuration
7
8
  #
@@ -33,37 +34,28 @@ module BestBoy
33
34
  #
34
35
  #
35
36
 
36
- def self.current_for(date, owner, type, source = nil)
37
- self.for(owner, type, source).created_on(date)
38
- end
39
-
40
- def self.current_or_create_for(owner, type, source = nil)
41
- day_report = self.current_for(Time.zone.now, owner, type, source).last
42
- day_report.present? ? day_report : self.create_for(owner, type, source)
43
- end
37
+ class << self
44
38
 
45
- def self.create_for(owner, type, source = nil)
46
- month_report = BestBoy::MonthReport.current_or_create_for(owner, type, source)
47
- day_report = BestBoy::DayReport.new
39
+ def create_for(owner, type, source = nil, date = Time.zone.now)
40
+ month_report = BestBoy::MonthReport.current_or_create_for(owner, type, source, date)
41
+ day_report = BestBoy::DayReport.new
48
42
 
49
- day_report.owner_type = owner
50
- day_report.event = type
51
- day_report.month_report_id = month_report.id
52
- day_report.event_source = source
43
+ day_report.owner_type = owner
44
+ day_report.event = type
45
+ day_report.month_report_id = month_report.id
46
+ day_report.event_source = source
47
+ day_report.created_at = date
53
48
 
54
- day_report.save ? day_report : nil
55
- end
49
+ day_report.save ? day_report : nil
50
+ end
56
51
 
57
- def self.for(owner, type, source = nil)
58
- self.where(owner_type: owner, event: type, event_source: source)
59
- end
60
-
61
- def self.daily_occurrences_for(owner, type, source = nil, date)
62
- self.created_on(date).for(owner, type, source).sum(:occurrences)
63
- end
52
+ def daily_occurrences_for(owner, type, source = nil, date)
53
+ created_on(date).for(owner, type, source).sum(:occurrences)
54
+ end
64
55
 
65
- def self.weekly_occurrences_for(owner, type, source = nil)
66
- self.week.for(owner, type, source).sum(:occurrences)
56
+ def weekly_occurrences_for(owner, type, source = nil)
57
+ week.for(owner, type, source).sum(:occurrences)
58
+ end
67
59
  end
68
60
  end
69
61
  end
@@ -28,6 +28,11 @@ module BestBoy
28
28
  create_best_boy_event_with_type(type, source)
29
29
  end
30
30
 
31
+ def report(klass: self.class.to_s, type: '', source: nil, date: Time.zone.now)
32
+ BestBoy::MonthReport.current_or_create_for(klass, type, source, date).increment!(:occurrences)
33
+ BestBoy::DayReport.current_or_create_for(klass, type, source, date).increment!(:occurrences)
34
+ end
35
+
31
36
  private
32
37
 
33
38
  def trigger_create_event
@@ -40,7 +45,7 @@ module BestBoy
40
45
  create_best_boy_event_with_type "destroy"
41
46
  end
42
47
 
43
- def create_best_boy_event_with_type type, source = nil
48
+ def create_best_boy_event_with_type(type, source = nil)
44
49
  raise "nil event is not allowed" if type.blank?
45
50
  best_boy_event = BestBoyEvent.new do |bbe|
46
51
  bbe.event = type
@@ -48,25 +53,10 @@ module BestBoy
48
53
  bbe.owner = self
49
54
  end
50
55
  best_boy_event.save
51
- report type, source
52
- end
53
-
54
- def report type, source = nil
55
- month_report = BestBoy::MonthReport.current_or_create_for(self.class.to_s, type)
56
- month_report_with_source = BestBoy::MonthReport.current_or_create_for(self.class.to_s, type, source) if source.present?
57
56
 
58
- day_report = BestBoy::DayReport.current_or_create_for(self.class.to_s, type)
59
- day_report_with_source = BestBoy::DayReport.current_or_create_for(self.class.to_s, type, source) if source.present?
60
-
61
- increment_occurrences_in_reports month_report, month_report_with_source, day_report, day_report_with_source
57
+ report(type: type, source: source) if source.present?
58
+ report(type: type, source: nil)
62
59
  end
63
60
 
64
- def increment_occurrences_in_reports(month_report, month_report_with_source, day_report, day_report_with_source)
65
- day_report_with_source.increment!(:occurrences) if day_report_with_source.present?
66
- month_report_with_source.increment!(:occurrences) if month_report_with_source.present?
67
-
68
- day_report.increment!(:occurrences)
69
- month_report.increment!(:occurrences)
70
- end
71
61
  end
72
62
  end
@@ -2,6 +2,7 @@ module BestBoy
2
2
  class MonthReport < ActiveRecord::Base
3
3
 
4
4
  include BestBoy::ObeysTestMode
5
+ include BestBoy::Reporting
5
6
 
6
7
  # db configuration
7
8
  #
@@ -33,37 +34,29 @@ module BestBoy
33
34
  #
34
35
  #
35
36
 
36
- def self.current_for(date, owner, type, source = nil)
37
- self.for(owner, type, source).between(date.beginning_of_month, date)
38
- end
37
+ class << self
39
38
 
40
- def self.current_or_create_for(owner, type, source = nil)
41
- month_report = self.current_for(Time.zone.now, owner, type, source).last
42
- month_report.present? ? month_report : self.create_for(owner, type, source)
43
- end
39
+ def create_for(owner, type, source = nil, date = Time.zone.now)
40
+ month_report = BestBoy::MonthReport.new
41
+ month_report.owner_type = owner.to_s
42
+ month_report.event = type
43
+ month_report.event_source = source
44
+ month_report.created_at = date || Time.zone.now
44
45
 
45
- def self.create_for(owner, type, source = nil)
46
- month_report = BestBoy::MonthReport.new
47
- month_report.owner_type = owner.to_s
48
- month_report.event = type
49
- month_report.event_source = source
50
- month_report.save ? month_report : nil
51
- end
46
+ month_report.save ? month_report : nil
47
+ end
52
48
 
53
- def self.for(owner, type, source = nil)
54
- self.where(owner_type: owner, event: type, event_source: source)
55
- end
49
+ def monthly_occurrences_for(owner, type, source = nil, date)
50
+ MonthReport.for(owner, type, source).between(date.beginning_of_month, date.end_of_month).sum(:occurrences)
51
+ end
56
52
 
57
- def self.monthly_occurrences_for(owner, type, source = nil, date)
58
- self.for(owner, type, source).between(date.beginning_of_month, date.end_of_month).sum(:occurrences)
59
- end
60
-
61
- def self.yearly_occurrences_for(owner, type, source = nil, date)
62
- self.for(owner, type, source).between(date.beginning_of_year, date).sum(:occurrences)
63
- end
53
+ def yearly_occurrences_for(owner, type, source = nil, date)
54
+ MonthReport.for(owner, type, source).between(date.beginning_of_year, date).sum(:occurrences)
55
+ end
64
56
 
65
- def self.overall_occurrences_for(owner, type, source = nil)
66
- self.for(owner, type, source).sum(:occurrences)
57
+ def overall_occurrences_for(owner, type, source = nil)
58
+ MonthReport.for(owner, type, source).sum(:occurrences)
59
+ end
67
60
  end
68
61
  end
69
62
  end
@@ -0,0 +1,25 @@
1
+ module BestBoy
2
+ module Reporting
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ class << self
7
+
8
+ def current_for(date, owner, type, source = nil)
9
+ self.for(owner, type, source).created_on(date)
10
+ end
11
+
12
+ def current_or_create_for(owner, type, source = nil, date = Time.zone.now)
13
+ report = current_for(date, owner, type, source).last
14
+ report.present? ? report : create_for(owner, type, source, date)
15
+ end
16
+
17
+ def for(owner, type, source = nil)
18
+ where(owner_type: owner, event: type, event_source: source)
19
+ end
20
+
21
+ end
22
+ end
23
+
24
+ end
25
+ end
@@ -1,3 +1,3 @@
1
1
  module BestBoy
2
- VERSION = '2.2.0'
2
+ VERSION = '2.2.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: best_boy
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
- - Christoph Seydel, Robin Neumann, Daniel Schoppmann
7
+ - Christoph Seydel, Carsten Zimmermann, Robin Neumann, Daniel Schoppmann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-22 00:00:00.000000000 Z
11
+ date: 2015-01-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -37,7 +37,7 @@ dependencies:
37
37
  - - '>='
38
38
  - !ruby/object:Gem::Version
39
39
  version: 0.14.1
40
- - - <
40
+ - - ~>
41
41
  - !ruby/object:Gem::Version
42
42
  version: 0.16.1
43
43
  type: :runtime
@@ -47,7 +47,7 @@ dependencies:
47
47
  - - '>='
48
48
  - !ruby/object:Gem::Version
49
49
  version: 0.14.1
50
- - - <
50
+ - - ~>
51
51
  - !ruby/object:Gem::Version
52
52
  version: 0.16.1
53
53
  - !ruby/object:Gem::Dependency
@@ -106,6 +106,20 @@ dependencies:
106
106
  - - ~>
107
107
  - !ruby/object:Gem::Version
108
108
  version: '3.5'
109
+ - !ruby/object:Gem::Dependency
110
+ name: appraisal
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - '>='
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ type: :development
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - '>='
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
109
123
  - !ruby/object:Gem::Dependency
110
124
  name: haml
111
125
  requirement: !ruby/object:Gem::Requirement
@@ -169,6 +183,7 @@ files:
169
183
  - lib/best_boy/models/active_record/best_boy/eventable.rb
170
184
  - lib/best_boy/models/active_record/best_boy/month_report.rb
171
185
  - lib/best_boy/models/active_record/best_boy/obeys_test_mode.rb
186
+ - lib/best_boy/models/active_record/best_boy/reporting.rb
172
187
  - lib/best_boy/models/active_record/best_boy_event.rb
173
188
  - lib/best_boy/version.rb
174
189
  - lib/generators/active_record/best_boy_generator.rb
@@ -203,7 +218,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
203
218
  version: '0'
204
219
  requirements: []
205
220
  rubyforge_project:
206
- rubygems_version: 2.2.2
221
+ rubygems_version: 2.4.5
207
222
  signing_key:
208
223
  specification_version: 4
209
224
  summary: a simple event driven logging for models