monocle 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
data/lib/monocle.rb CHANGED
@@ -85,6 +85,8 @@ module Monocle
85
85
  self._monocle_view_types.keys.each_with_index do |view_type, i|
86
86
  cache_view_count(view_type, results[i])
87
87
  end
88
+ self.update_column(self._monocle_options[:cache_threshold_check_field].to_sym, Time.now) if respond_to?(:update_column)
89
+ self.set(self._monocle_options[:cache_threshold_check_field].to_sym, Time.now) if respond_to?(:set)
88
90
  end
89
91
  end
90
92
 
@@ -2,8 +2,16 @@ require 'sinatra/base'
2
2
 
3
3
  module Monocle
4
4
  class Server < Sinatra::Base
5
- post '/:type/:id(.:format)' do
6
- if object = params[:type].classify.constantize.find(params[:id])
5
+ post '/:type/:id.:format' do
6
+ view_object(params[:type], params[:id])
7
+ end
8
+
9
+ get '/:type/:id.:format' do
10
+ view_object(params[:type], params[:id])
11
+ end
12
+
13
+ def view_object(type, id)
14
+ if object = type.classify.constantize.find(id)
7
15
  object.view!
8
16
  'o_0 +1'
9
17
  else
@@ -1,3 +1,3 @@
1
1
  module Monocle
2
- VERSION = '0.2.1'
2
+ VERSION = '0.2.2'
3
3
  end
data/spec/monocle_spec.rb CHANGED
@@ -16,6 +16,7 @@ class TestObject
16
16
  hourly: -> { Time.now.beginning_of_hour }
17
17
 
18
18
  attr_accessor :id
19
+ attr_accessor :updated_at
19
20
  attr_accessor :overall_views, :yearly_views, :monthly_views
20
21
  attr_accessor :weekly_views, :daily_views, :hourly_views
21
22
  attr_accessor :quarterly_views
@@ -29,15 +30,12 @@ class TestObject
29
30
  def initialize
30
31
  @id = '12345'
31
32
  @overall_views = 0
33
+ @updated_at = Time.now - 1.hour
32
34
  end
33
35
 
34
36
  def update_column(field, count)
35
37
  self.send("#{field}=", count)
36
38
  end
37
-
38
- def updated_at
39
- Time.now - 1.hour
40
- end
41
39
  end
42
40
 
43
41
  def make_viewed_objects(number_of_objects_to_make)
@@ -116,17 +114,38 @@ describe Monocle do
116
114
  end
117
115
  end
118
116
 
119
- describe '#view!' do
120
- before { 50.times { object.view! }}
121
- after { object.destroy_views }
117
+ context 'when cache time is over threshold' do
118
+ describe '#view!' do
119
+ before { object.stub(:updated_at).and_return(Time.now - 1.hour) }
120
+ before { 50.times { object.view! }}
121
+ after { object.destroy_views }
122
+
123
+ %w(overall yearly monthly weekly daily hourly quarterly).each do |view_type|
124
+ it "sets #{view_type} views count" do
125
+ object.send("#{view_type}_views_count").should == 50
126
+ end
122
127
 
123
- %w(overall yearly monthly weekly daily hourly quarterly).each do |view_type|
124
- it "sets #{view_type} views count" do
125
- object.send("#{view_type}_views_count").should == 50
128
+ it "updates cached #{view_type} views count" do
129
+ object.send("#{view_type}_views").should == 50
130
+ end
126
131
  end
132
+ end
133
+ end
134
+
135
+ context 'when cache time is under threshold' do
136
+ describe '#view!' do
137
+ before { object.stub(:updated_at).and_return(Time.now) }
138
+ before { 50.times { object.view! }}
139
+ after { object.destroy_views }
127
140
 
128
- it "updates cached #{view_type} views count" do
129
- object.send("#{view_type}_views").should == 50
141
+ %w(overall yearly monthly weekly daily hourly quarterly).each do |view_type|
142
+ it "sets #{view_type} views count" do
143
+ object.send("#{view_type}_views_count").should == 50
144
+ end
145
+
146
+ it "updates cached #{view_type} views count" do
147
+ object.send("#{view_type}_views").to_i.should == 0
148
+ end
130
149
  end
131
150
  end
132
151
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: monocle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: