seasyar 0.0.11 → 0.0.12
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.
- data/Gemfile +1 -1
- data/Gemfile.lock +2 -2
- data/VERSION +1 -1
- data/lib/seasyar/seasyar.rb +22 -13
- data/seasyar.gemspec +5 -5
- data/spec/seasyar_spec.rb +34 -14
- metadata +5 -5
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -32,7 +32,7 @@ GEM
|
|
32
32
|
rspec-expectations (2.8.0)
|
33
33
|
diff-lcs (~> 1.1.2)
|
34
34
|
rspec-mocks (2.8.0)
|
35
|
-
seasy (0.0.
|
35
|
+
seasy (0.0.8)
|
36
36
|
sqlite3 (1.3.5)
|
37
37
|
standalone_migrations (1.0.5)
|
38
38
|
activerecord (>= 3)
|
@@ -49,6 +49,6 @@ DEPENDENCIES
|
|
49
49
|
multi_json (~> 1.0)
|
50
50
|
rcov
|
51
51
|
rspec
|
52
|
-
seasy (
|
52
|
+
seasy (>= 0.0.8)
|
53
53
|
sqlite3
|
54
54
|
standalone_migrations
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.12
|
data/lib/seasyar/seasyar.rb
CHANGED
@@ -1,32 +1,41 @@
|
|
1
1
|
module Seasyar
|
2
2
|
require 'seasy'
|
3
|
-
|
3
|
+
|
4
4
|
def index index_name, *fields
|
5
5
|
index = Seasy::Index.with_name index_name.to_s
|
6
|
-
|
6
|
+
|
7
|
+
has_changed = fields.detect do |one_field|
|
8
|
+
self.send "#{one_field}_changed?".to_sym
|
9
|
+
end
|
10
|
+
|
11
|
+
if has_changed
|
12
|
+
value = aggregated_value fields
|
13
|
+
|
14
|
+
source = "#{self.class}:#{self.id}"
|
15
|
+
|
16
|
+
target = block_given? ? yield( self ) : self.id
|
17
|
+
|
18
|
+
index.add value.to_s, target.to_s, :source => source
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def aggregated_value fields
|
7
23
|
value = ''
|
8
24
|
fields.each do |one_field|
|
9
25
|
value << " #{self.send one_field }"
|
10
26
|
end
|
11
|
-
|
12
|
-
|
13
|
-
source = "#{self.class}:#{target}"
|
27
|
+
value
|
28
|
+
end
|
14
29
|
|
15
|
-
if block_given?
|
16
|
-
target = yield self
|
17
|
-
end
|
18
|
-
index.add value.to_s, target.to_s, :source => source
|
19
|
-
end
|
20
|
-
|
21
30
|
def search index_name, query
|
22
31
|
index = Seasy::Index.with_name index_name.to_s
|
23
32
|
index.search query
|
24
33
|
end
|
25
|
-
|
34
|
+
|
26
35
|
def unindex index_name
|
27
36
|
index = Seasy::Index.with_name index_name.to_s
|
28
37
|
index.remove "#{self.class}:#{self.id}"
|
29
38
|
end
|
30
|
-
|
39
|
+
|
31
40
|
module_function :index, :search, :unindex
|
32
41
|
end
|
data/seasyar.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "seasyar"
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.12"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Fredrik Rubensson"]
|
12
|
-
s.date = "2012-
|
12
|
+
s.date = "2012-10-30"
|
13
13
|
s.description = "Seasy integration. Active record storage for seasy and save hooks in models."
|
14
14
|
s.email = "fredrik@eldfluga.se"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -48,7 +48,7 @@ Gem::Specification.new do |s|
|
|
48
48
|
s.specification_version = 3
|
49
49
|
|
50
50
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
51
|
-
s.add_runtime_dependency(%q<seasy>, ["
|
51
|
+
s.add_runtime_dependency(%q<seasy>, [">= 0.0.8"])
|
52
52
|
s.add_runtime_dependency(%q<activerecord>, ["~> 3.0"])
|
53
53
|
s.add_runtime_dependency(%q<multi_json>, ["~> 1.0"])
|
54
54
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
@@ -58,7 +58,7 @@ Gem::Specification.new do |s|
|
|
58
58
|
s.add_development_dependency(%q<standalone_migrations>, [">= 0"])
|
59
59
|
s.add_development_dependency(%q<sqlite3>, [">= 0"])
|
60
60
|
else
|
61
|
-
s.add_dependency(%q<seasy>, ["
|
61
|
+
s.add_dependency(%q<seasy>, [">= 0.0.8"])
|
62
62
|
s.add_dependency(%q<activerecord>, ["~> 3.0"])
|
63
63
|
s.add_dependency(%q<multi_json>, ["~> 1.0"])
|
64
64
|
s.add_dependency(%q<rspec>, [">= 0"])
|
@@ -69,7 +69,7 @@ Gem::Specification.new do |s|
|
|
69
69
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
70
70
|
end
|
71
71
|
else
|
72
|
-
s.add_dependency(%q<seasy>, ["
|
72
|
+
s.add_dependency(%q<seasy>, [">= 0.0.8"])
|
73
73
|
s.add_dependency(%q<activerecord>, ["~> 3.0"])
|
74
74
|
s.add_dependency(%q<multi_json>, ["~> 1.0"])
|
75
75
|
s.add_dependency(%q<rspec>, [">= 0"])
|
data/spec/seasyar_spec.rb
CHANGED
@@ -1,42 +1,52 @@
|
|
1
1
|
require 'seasyar'
|
2
2
|
|
3
3
|
|
4
|
-
class Dummy
|
4
|
+
class Dummy
|
5
5
|
include Seasyar
|
6
|
-
|
6
|
+
|
7
7
|
def initialize id, static
|
8
8
|
@id = id
|
9
9
|
@static = static
|
10
|
+
@static_changed = true
|
10
11
|
end
|
11
12
|
|
12
|
-
INDEX_NAME = "test_index_name"
|
13
|
+
INDEX_NAME = "test_index_name"
|
13
14
|
|
14
15
|
def save
|
15
16
|
index INDEX_NAME, :static
|
16
17
|
end
|
17
|
-
|
18
|
+
|
18
19
|
def save_with_block
|
19
|
-
index( INDEX_NAME, :static ) {
|
20
|
+
index( INDEX_NAME, :static ) { 666 }
|
21
|
+
end
|
22
|
+
|
23
|
+
def save_unchanged
|
24
|
+
@static_changed = false
|
25
|
+
index INDEX_NAME, :static
|
20
26
|
end
|
21
|
-
|
27
|
+
|
22
28
|
def removal
|
23
29
|
unindex INDEX_NAME
|
24
30
|
end
|
25
|
-
|
31
|
+
|
26
32
|
def id
|
27
33
|
@id
|
28
34
|
end
|
29
|
-
|
30
|
-
def static
|
35
|
+
|
36
|
+
def static
|
31
37
|
@static
|
32
38
|
end
|
39
|
+
|
40
|
+
def static_changed?
|
41
|
+
@static_changed
|
42
|
+
end
|
33
43
|
end
|
34
44
|
|
35
45
|
describe Seasyar do
|
36
46
|
before :all do
|
37
47
|
ActiveRecord::Base.configurations = YAML::load(IO.read('db/config.yml'))
|
38
48
|
ActiveRecord::Base.establish_connection('development')
|
39
|
-
|
49
|
+
|
40
50
|
Seasy.configure do |config|
|
41
51
|
config.storage = Seasyar::ActiveRecordStorage
|
42
52
|
end
|
@@ -45,25 +55,35 @@ describe Seasyar do
|
|
45
55
|
before :each do
|
46
56
|
Seasyar::SeasyData.all.each { |data| data.delete }
|
47
57
|
end
|
48
|
-
|
58
|
+
|
49
59
|
it "should save to index" do
|
50
60
|
d = Dummy.new 42, 'static'
|
51
61
|
d.save
|
52
62
|
Seasyar.search( Dummy::INDEX_NAME, 'static' ).should == {42.to_s => 1}
|
53
63
|
end
|
54
|
-
|
64
|
+
|
55
65
|
it "should save source" do
|
56
66
|
d = Dummy.new 144, 'diff'
|
57
67
|
d.save_with_block
|
58
68
|
Seasyar.search( Dummy::INDEX_NAME, 'diff' ).should == {666.to_s => 1}
|
59
|
-
|
69
|
+
|
60
70
|
d.save # the 666 entry should be removed and 42 be there instead
|
61
71
|
Seasyar.search( Dummy::INDEX_NAME, 'diff' ).should == {144.to_s => 1}
|
62
72
|
end
|
63
|
-
|
73
|
+
|
64
74
|
it "should remove from index" do
|
65
75
|
d = Dummy.new 43, 'static'
|
66
76
|
d.save
|
67
77
|
d.removal
|
78
|
+
Seasyar.search( Dummy::INDEX_NAME, 'static' ).should be_empty
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should only save when changed" do
|
82
|
+
key = 'nonchanging'
|
83
|
+
d = Dummy.new 4711, key
|
84
|
+
d.save
|
85
|
+
stamp = Seasyar::SeasyData.find_by_key( key ).updated_at
|
86
|
+
d.save_unchanged
|
87
|
+
Seasyar::SeasyData.find_by_key( key ).updated_at.should == stamp
|
68
88
|
end
|
69
89
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: seasyar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.12
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Fredrik Rubensson
|
@@ -10,16 +10,16 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2012-
|
13
|
+
date: 2012-10-30 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: seasy
|
17
17
|
requirement: &id001 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
|
-
- - "
|
20
|
+
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.0.
|
22
|
+
version: 0.0.8
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: *id001
|
@@ -154,7 +154,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
154
154
|
requirements:
|
155
155
|
- - ">="
|
156
156
|
- !ruby/object:Gem::Version
|
157
|
-
hash:
|
157
|
+
hash: -2407228457659172754
|
158
158
|
segments:
|
159
159
|
- 0
|
160
160
|
version: "0"
|