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 CHANGED
@@ -3,7 +3,7 @@ source "http://rubygems.org"
3
3
  # Example:
4
4
  # gem "activesupport", ">= 2.3.5"
5
5
 
6
- gem "seasy", "0.0.7"
6
+ gem "seasy", ">= 0.0.8"
7
7
  gem "activerecord", "~> 3.0"
8
8
  gem "multi_json", "~> 1.0"
9
9
 
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.7)
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 (= 0.0.7)
52
+ seasy (>= 0.0.8)
53
53
  sqlite3
54
54
  standalone_migrations
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.11
1
+ 0.0.12
@@ -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
- target = self.id
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.11"
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-09-10"
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>, ["= 0.0.7"])
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>, ["= 0.0.7"])
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>, ["= 0.0.7"])
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 ) {|unused| 666}
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.11
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-09-10 00:00:00 Z
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.7
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: 1935996492776390587
157
+ hash: -2407228457659172754
158
158
  segments:
159
159
  - 0
160
160
  version: "0"