extraloop-redis-storage 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
data/History.txt CHANGED
@@ -1,5 +1,8 @@
1
+ == 0.0.12 / 2012-03-08
2
+ * more improvements to ExtraLoop::Storage::IdKey
3
+
1
4
  == 0.0.11 / 2012-03-08
2
- * Improved Ohm::Storage::IdKey module
5
+ * Improved ExtraLoop::Storage::IdKey module
3
6
 
4
7
  == 0.0.10 / 2012-03-06
5
8
  * Implemented non-numeric record ids for ExtraLoop::Storage::Record
@@ -33,7 +33,7 @@ require "support"
33
33
 
34
34
  module ExtraLoop
35
35
  module Storage
36
- VERSION ||= "0.0.11"
36
+ VERSION ||= "0.0.12"
37
37
 
38
38
  def self.connect(*args)
39
39
  Ohm.connect(*args)
@@ -44,8 +44,10 @@ module ExtraLoop::Storage::IdKey
44
44
  # Raises an 'ArgumentError' if the provided id string does not match the ID_FORMAT (e.g. if it contains non-alphanumeric characters').
45
45
  #
46
46
  def [](id, attributes={})
47
+ # automatically strip prefix from id
48
+ id = id.to_s.gsub(prefix + KEY_SEPARATOR, '')
47
49
  raise ArgumentError.new "Invalid id '#{id}'" unless id =~ ID_FORMAT
48
- id = prefix(id.to_s, attributes)
50
+ id = [prefix, id].reject(&:empty?).join(KEY_SEPARATOR)
49
51
 
50
52
  if record = super(id)
51
53
  record.update(attributes) if attributes.any?
@@ -60,7 +62,6 @@ module ExtraLoop::Storage::IdKey
60
62
  # While default behviour is to prepend the record's model class name to id string, it is possible to override this method
61
63
  # so that the generated record id key will include other attributes (see example below).
62
64
  #
63
- # id - The record id.
64
65
  # attributes - The attributes hash
65
66
  #
66
67
  # Examples
@@ -74,8 +75,8 @@ module ExtraLoop::Storage::IdKey
74
75
  # extend IdKey
75
76
  # attribute :locale
76
77
  #
77
- # def self::prefix(id, attrs={})
78
- # [self.name, attrs.fetch(:locale, 'en'), id]).join(IdKey::KEY_SEPARATOR)
78
+ # def self::prefix(attrs={})
79
+ # [self.name, attrs.fetch(:locale, 'en')].join(IdKey::KEY_SEPARATOR)
79
80
  # end
80
81
  # end
81
82
  #
@@ -87,8 +88,8 @@ module ExtraLoop::Storage::IdKey
87
88
  # Returns the record id key.
88
89
  #
89
90
 
90
- def prefix(id, attributes={})
91
- [self.name, id].join(KEY_SEPARATOR)
91
+ def prefix(attributes={})
92
+ self.name
92
93
  end
93
94
 
94
95
  end
@@ -4,21 +4,18 @@
4
4
  class ExtraLoop::Storage::Model < Ohm::Model
5
5
  extend ExtraLoop::Storage::IdKey
6
6
 
7
- # Internal: Overrides the default id key handling function and
8
- # replaces it with a validity check.
9
- #
10
- # id - The record id.
11
- # attributes - The record attributes (defaults to an empty array)
12
- #
13
- #
14
- #
15
- # Returns the model name
16
- # Raises an ArgumentError if the id string is not capitalized
17
- #
7
+ class << self
8
+ alias_method :'_[]', :[]
18
9
 
19
- def self.prefix(id, attributes={})
20
- raise ArgumentError.new "model Id should be capitalized" unless id.to_s[0] =~ /[A-Z]/
21
- id
10
+ def [](id, attributes={})
11
+ id = id.to_s.gsub(prefix, '')
12
+ raise ArgumentError.new "model name must be a constant" unless ('A'..'Z').include?(id[0])
13
+ send('_[]', id, attributes)
14
+ end
15
+
16
+ def prefix
17
+ ""
18
+ end
22
19
  end
23
20
 
24
21
  def to_hash
data/spec/id_key_spec.rb CHANGED
@@ -32,6 +32,16 @@ describe Entry do
32
32
  end
33
33
  end
34
34
 
35
+ context "with a generated id as argument" do
36
+ before do
37
+ @entry = Entry['fufu']
38
+ end
39
+
40
+ subject { Entry[@entry.id] }
41
+ it { should eql(@entry) }
42
+ it { should eql(Entry['fufu'])}
43
+ end
44
+
35
45
  context "without arguments" do
36
46
  before do
37
47
  @entry = Entry['foo']
data/spec/model_spec.rb CHANGED
@@ -9,6 +9,7 @@ describe ExtraLoop::Storage::Model do
9
9
  it "should create a record with 'My_model' as an id" do
10
10
  @model.id.should eql('My_model')
11
11
  end
12
+
12
13
 
13
14
  it "should throw an argument error if the model id is not capitalized" do
14
15
  lambda { ExtraLoop::Storage::Model[:my_model] }.should raise_error(ArgumentError)
data/spec/record_spec.rb CHANGED
@@ -15,6 +15,22 @@ describe ExtraLoop::Storage::Record do
15
15
 
16
16
  context "record subclasses" do
17
17
 
18
+ describe "#valid?" do
19
+ subject { @record = MyRecord.new(:foo => 'foo', :bar => 'bar').valid? }
20
+ it { should be_false }
21
+ end
22
+
23
+ describe "#errors" do
24
+ before do
25
+ @record = MyRecord.new(:foo => 'foo', :bar => 'bar')
26
+ @record.save
27
+ end
28
+
29
+ subject { @record.errors }
30
+
31
+ it { should include([:session, :not_present]) }
32
+ end
33
+
18
34
  describe "#save" do
19
35
 
20
36
  subject { MyRecord.new(:session => @session, :extracted_at => Time.now).save }
@@ -92,9 +108,4 @@ describe ExtraLoop::Storage::Record do
92
108
  end
93
109
  end
94
110
  end
95
-
96
- after do
97
- redis = Ohm.redis
98
- redis.keys("[^art]*").each { |key| redis.del(key) }
99
- end
100
111
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: extraloop-redis-storage
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.12
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-04-08 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: extraloop
16
- requirement: &17492340 !ruby/object:Gem::Requirement
16
+ requirement: &10546440 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.0.3
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *17492340
24
+ version_requirements: *10546440
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: ohm
27
- requirement: &17491180 !ruby/object:Gem::Requirement
27
+ requirement: &10545060 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.1.3
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *17491180
35
+ version_requirements: *10545060
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: ohm-contrib
38
- requirement: &17490000 !ruby/object:Gem::Requirement
38
+ requirement: &10544240 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 0.1.2
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *17490000
46
+ version_requirements: *10544240
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: thor
49
- requirement: &17489000 !ruby/object:Gem::Requirement
49
+ requirement: &10543460 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - =
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.14.6
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *17489000
57
+ version_requirements: *10543460
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rake
60
- requirement: &17366960 !ruby/object:Gem::Requirement
60
+ requirement: &10452020 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *17366960
68
+ version_requirements: *10452020
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
- requirement: &17365700 !ruby/object:Gem::Requirement
71
+ requirement: &10451300 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ~>
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 2.7.0
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *17365700
79
+ version_requirements: *10451300
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: guard-rspec
82
- requirement: &17365120 !ruby/object:Gem::Requirement
82
+ requirement: &10450580 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 0.7.0
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *17365120
90
+ version_requirements: *10450580
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rr
93
- requirement: &17363920 !ruby/object:Gem::Requirement
93
+ requirement: &10449680 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ~>
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: 1.0.4
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *17363920
101
+ version_requirements: *10449680
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: pry
104
- requirement: &17362540 !ruby/object:Gem::Requirement
104
+ requirement: &10449200 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ~>
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: 0.9.7.4
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *17362540
112
+ version_requirements: *10449200
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: fusion_tables
115
- requirement: &17361520 !ruby/object:Gem::Requirement
115
+ requirement: &10448560 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ~>
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: 0.3.1
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *17361520
123
+ version_requirements: *10448560
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: geocoder
126
- requirement: &17360980 !ruby/object:Gem::Requirement
126
+ requirement: &10447960 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ~>
@@ -131,7 +131,7 @@ dependencies:
131
131
  version: 1.1.1
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *17360980
134
+ version_requirements: *10447960
135
135
  description: Redis-based Persistence layer for the ExtraLoop data extraction toolkit.
136
136
  Includes a convinent command line tool allowing to list, filter, delete, and export
137
137
  harvested datasets
@@ -182,7 +182,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
182
182
  version: '0'
183
183
  segments:
184
184
  - 0
185
- hash: -2994180190336763644
185
+ hash: -103533273171321117
186
186
  required_rubygems_version: !ruby/object:Gem::Requirement
187
187
  none: false
188
188
  requirements: