acts_as_sweepable 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -28,7 +28,8 @@ Params accepted by this method:
28
28
  * `time` - d(days),h(hours), m(minutes)
29
29
  * `conditions` - additional SQL conditions (like WHERE)
30
30
  * `columns` - (default :updated_at) - which columns should it consider when removing
31
- * `method` - (default: destroy_all) - which method should it use to destroy objects
31
+ * `method` - (default: :destroy_all) - which method should it use to destroy objects
32
+ * `format` - (default: :db) - should it use to_s(:db) or to_i
32
33
 
33
34
  You can also yield a block of code - it will be performed on every object that should be deleted:
34
35
 
data/Rakefile CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'rake'
3
3
  require 'echoe'
4
4
 
5
- Echoe.new('acts_as_sweepable', '0.2.1') do |p|
5
+ Echoe.new('acts_as_sweepable', '0.2.2') do |p|
6
6
  p.description = "Adds a class method called sweep to ActiveRecord - used to remove old elements"
7
7
  p.url = "https://github.com/mensfeld/Acts-as-Sweepable"
8
8
  p.author = "Maciej Mensfeld"
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "acts_as_sweepable"
5
- s.version = "0.2.1"
5
+ s.version = "0.2.2"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Maciej Mensfeld"]
@@ -2,7 +2,8 @@
2
2
  module Acts
3
3
  module AsSweepable
4
4
 
5
- class InvalidTime < StandardError; end
5
+ class InvalidTime < StandardError; end
6
+ class InvalidFormat < StandardError; end
6
7
 
7
8
  def self.included(base)
8
9
  base.extend ClassMethods
@@ -18,18 +19,28 @@ module Acts
18
19
  conditions = options.delete(:conditions)
19
20
  columns = [options.delete(:columns) || :updated_at].flatten
20
21
  remove_method = options.delete(:method) || :destroy_all
21
-
22
+ time_format = options.delete(:format) || :db
22
23
 
23
24
  time = case time_ago
25
+ when /^(\d+)s$/ then Time.now - $1.to_i.second
24
26
  when /^(\d+)m$/ then Time.now - $1.to_i.minute
25
27
  when /^(\d+)h$/ then Time.now - $1.to_i.hour
26
28
  when /^(\d+)d$/ then Time.now - $1.to_i.day
27
29
  else raise(InvalidTime, time_ago)
28
30
  end
29
31
 
32
+ case time_format
33
+ when :db then
34
+ time = time.to_s(:db)
35
+ when :integer then
36
+ time = time.to_i
37
+ else
38
+ raise(InvalidFormat, time_format)
39
+ end
40
+
30
41
  statement = []
31
42
  columns.each do |column|
32
- statement << "#{column} < '#{time.to_s(:db)}'"
43
+ statement << "#{column} < '#{time}'"
33
44
  end
34
45
 
35
46
  statement = "(#{statement.join(' OR ')})"
@@ -2,9 +2,6 @@ require 'spec_helper'
2
2
 
3
3
  ROOT = File.expand_path(File.dirname(__FILE__))
4
4
 
5
- class CoolElement < ActiveRecord::Base
6
- end
7
-
8
5
  describe CoolElement do
9
6
  subject { CoolElement }
10
7
 
@@ -117,3 +114,23 @@ describe CoolElement do
117
114
  end
118
115
 
119
116
  end
117
+
118
+ describe IntElement do
119
+ subject { IntElement }
120
+
121
+ before(:each){ IntElement.destroy_all}
122
+
123
+ context 'when we have a integer timestamp' do
124
+ it 'should work in a normal way' do
125
+ el = subject.create(
126
+ :timestamp => 10.days.ago.to_i
127
+ )
128
+ subject.sweep(:time => '9d', :format => :integer, :columns => :timestamp)
129
+ subject.all.count.should eql(0)
130
+
131
+ el = subject.create(:timestamp => 10.days.ago.to_i)
132
+ subject.sweep(:time => '11d', :format => :integer, :columns => :timestamp)
133
+ subject.all.count.should eql(1)
134
+ end
135
+ end
136
+ end
@@ -23,3 +23,12 @@ ActiveRecord::Schema.define do
23
23
  end
24
24
  end
25
25
 
26
+ ActiveRecord::Schema.define do
27
+ create_table :int_elements do |table|
28
+ table.text :name
29
+ table.integer :timestamp
30
+ end
31
+ end
32
+
33
+ class CoolElement < ActiveRecord::Base; end
34
+ class IntElement < ActiveRecord::Base; end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_sweepable
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:
@@ -13,7 +13,7 @@ date: 2012-06-17 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &20441820 !ruby/object:Gem::Requirement
16
+ requirement: &16651720 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 2.0.0
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *20441820
24
+ version_requirements: *16651720
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: mocha
27
- requirement: &20438860 !ruby/object:Gem::Requirement
27
+ requirement: &16650940 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *20438860
35
+ version_requirements: *16650940
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: active_record
38
- requirement: &20437780 !ruby/object:Gem::Requirement
38
+ requirement: &16647120 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *20437780
46
+ version_requirements: *16647120
47
47
  description: Adds a class method called sweep to ActiveRecord - used to remove old
48
48
  elements
49
49
  email: maciej@mensfeld.pl