seasyar 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
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"