occurro 0.2.5 → 0.3.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 820dbd667977ad499b6e91e7b0d200d36dce82eb
4
- data.tar.gz: eaf179afff4b590d3e5990e6e2038ac2a3488228
3
+ metadata.gz: 69457548952e55cee15bbbdf3b78e0acd4173199
4
+ data.tar.gz: b4ec6b1156db2d9c956bd2ce5cc9935df88d11dc
5
5
  SHA512:
6
- metadata.gz: 764c8834ae8b34481ce0820e3018e8799d75a9a3482e75500902884c180c32f2bac1fb35d17ef21648306c7e6653a8b956bb9e6660155dafa2b9083c723dfef5
7
- data.tar.gz: e3df221a6302186694ae48a4eb7da9aa7e4f4f291be220c0f4072625f6e834dbfbeae6c3795d0e5f5815a17c6a701ab9a80d15a4db546f3cd192ea985adcc6a2
6
+ metadata.gz: 01ce6151574846a2a7914d9c1ed4f1fb3211f03775097e2a47902a339b08a9359c9af3870d508b8ea6d296f2485db0f18da2170ac5533d049931e68545162f88
7
+ data.tar.gz: 779de3d5bb3500346e4636b3caf6d5480a4b05802c48af8b6b56148a95d635f0f360e23789fe488a35178fa20ddbdaa4cae9359ed938aafab6ab552e7be62f8e
@@ -1,20 +1,20 @@
1
1
  module Occurro
2
2
  class CountersController < ApplicationController
3
3
  respond_to :js
4
- before_filter :get_countable
5
4
 
6
5
  def increment
7
- if Occurro::CachedSession.unique_visitor?(@countable, session)
8
- @countable.increment_counter
9
- Occurro::CachedSession.add_cache(@countable, session)
6
+ if Occurro::CachedSession.unique_visitor?(countable, session)
7
+ countable.increment_counter
8
+ Occurro::CachedSession.add_cache(countable, session)
10
9
  end
11
10
  render text: ""
12
11
  end
13
12
 
14
13
  private
15
14
 
16
- def get_countable
17
- @countable = params[:countable_type].constantize.find params[:countable_id]
15
+ def countable
16
+ @countable ||=
17
+ params[:countable_type].constantize.find params[:countable_id]
18
18
  end
19
19
 
20
20
  end
@@ -7,41 +7,53 @@ module Occurro
7
7
 
8
8
  # Public: Rotate the counter value for the period_type
9
9
  #
10
- # * period_type:
10
+ # * period_type:
11
11
  # :daily #=> daily rotation
12
12
  # :weekly #=> weekly rotation
13
13
  # :monthly #=> monthly rotation
14
14
  #
15
15
  def update_counter(period_type)
16
- column_from, column_to =
17
- case period_type.to_s
18
- when 'daily'
19
- ['today', 'yesterday']
20
- when 'weekly'
21
- ['this_week', 'last_week']
22
- when 'monthly'
23
- ['this_month', 'last_month']
24
- else
25
- return false
26
- end
27
-
28
- self.send("#{column_to}=", self.send(column_from))
29
- self.send("#{column_from}=", 0)
30
- self.save
16
+ column_from, column_to = self.class.columns_to_shift(period_type)
17
+ return unless column_from && column_to
18
+
19
+ self.update_attributes({
20
+ column_to => self[column_from],
21
+ column_from => 0
22
+ })
23
+ end
24
+
25
+ def self.update_counters(period_type)
26
+ column_from, column_to = columns_to_shift(period_type)
27
+ return unless column_from && column_to
28
+
29
+ update_all("#{column_to} = #{column_from}, #{column_from} = 0")
31
30
  end
32
31
 
33
32
  # Public: increments 'model' counters by a 'count' factor
34
33
  #
35
34
  def self.increment_counters(model, count = 1)
36
- counter = Occurro::Counter.find_or_create_by_countable_type_and_countable_id(model.class.base_class.name, model.id)
35
+ counter = Occurro::Counter.find_or_create_by(countable_type: model.class.base_class.name, countable_id: model.id)
37
36
  counter.update_attributes({
38
37
  :today => counter.today + count,
39
38
  :this_week => counter.this_week + count,
40
39
  :this_month => counter.this_month + count,
41
40
  :total => counter.total + count
42
- })
41
+ })
43
42
  Occurro::DailyCounter.increment_counters(model, count) if model.class.use_daily_counters?
44
43
  end
45
44
 
45
+ def self.columns_to_shift(period_type)
46
+ case period_type.to_s
47
+ when 'daily'
48
+ ['today', 'yesterday']
49
+ when 'weekly'
50
+ ['this_week', 'last_week']
51
+ when 'monthly'
52
+ ['this_month', 'last_month']
53
+ else
54
+ [false, false]
55
+ end
56
+ end
57
+
46
58
  end
47
59
  end
@@ -6,7 +6,12 @@ module Occurro
6
6
  belongs_to :countable, polymorphic: true
7
7
 
8
8
  def self.increment_counters(model, count = 1)
9
- counter = Occurro::DailyCounter.find_or_create_by_countable_type_and_countable_id_and_created_on(model.class.base_class.name, model.id, Date.today)
9
+ counter =
10
+ Occurro::DailyCounter.find_or_create_by({
11
+ countable_type: model.class.base_class.name,
12
+ countable_id: model.id,
13
+ created_on: Date.today
14
+ })
10
15
  counter.increment!(:total, count)
11
16
  end
12
17
  end
@@ -1,3 +1,3 @@
1
1
  module Occurro
2
- VERSION = "0.2.5"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,97 +1,97 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: occurro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tiago Scolari
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-11 00:00:00.000000000 Z
11
+ date: 2014-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 3.2.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 3.2.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec-rails
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: database_cleaner
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: factory_girl_rails
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: resque
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: delayed_job_active_record
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  description: Tasks and models for counting model visualizations.
@@ -101,6 +101,9 @@ executables: []
101
101
  extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
+ - MIT-LICENSE
105
+ - README.rdoc
106
+ - Rakefile
104
107
  - app/assets/javascripts/occurro/application.js
105
108
  - app/assets/stylesheets/occurro/application.css
106
109
  - app/controllers/occurro/application_controller.rb
@@ -112,8 +115,9 @@ files:
112
115
  - config/routes.rb
113
116
  - db/migrate/create_occurro_counters.rb
114
117
  - db/migrate/create_occurro_daily_counters.rb
115
- - lib/generators/occurro/migrations/migrations_generator.rb
116
118
  - lib/generators/occurro/migrations/USAGE
119
+ - lib/generators/occurro/migrations/migrations_generator.rb
120
+ - lib/occurro.rb
117
121
  - lib/occurro/cached_counter.rb
118
122
  - lib/occurro/cached_session.rb
119
123
  - lib/occurro/engine.rb
@@ -123,11 +127,7 @@ files:
123
127
  - lib/occurro/jobs/sender.rb
124
128
  - lib/occurro/tasks.rb
125
129
  - lib/occurro/version.rb
126
- - lib/occurro.rb
127
130
  - lib/tasks/occurro_tasks.rake
128
- - MIT-LICENSE
129
- - Rakefile
130
- - README.rdoc
131
131
  homepage: https://github.com/tscolari/occurro
132
132
  licenses: []
133
133
  metadata: {}
@@ -137,17 +137,17 @@ require_paths:
137
137
  - lib
138
138
  required_ruby_version: !ruby/object:Gem::Requirement
139
139
  requirements:
140
- - - '>='
140
+ - - ">="
141
141
  - !ruby/object:Gem::Version
142
142
  version: '0'
143
143
  required_rubygems_version: !ruby/object:Gem::Requirement
144
144
  requirements:
145
- - - '>='
145
+ - - ">="
146
146
  - !ruby/object:Gem::Version
147
147
  version: '0'
148
148
  requirements: []
149
149
  rubyforge_project:
150
- rubygems_version: 2.0.0
150
+ rubygems_version: 2.2.2
151
151
  signing_key:
152
152
  specification_version: 4
153
153
  summary: Simple counters for ActiveRecord visualizations.