elastic_searchable 0.6.8 → 0.7.0

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.
@@ -19,7 +19,7 @@ module ElasticSearchable
19
19
  # :json (optional) configure the json document to be indexed (see http://api.rubyonrails.org/classes/ActiveModel/Serializers/JSON.html#method-i-as_json for available options)
20
20
  def elastic_searchable(options = {})
21
21
  options.symbolize_keys!
22
- self.elastic_options = options
22
+ self.elastic_options = options.merge(:unless => Array.wrap(options[:unless]).push(&:elasticsearch_offline?))
23
23
 
24
24
  extend ElasticSearchable::Indexing::ClassMethods
25
25
  extend ElasticSearchable::Queries
@@ -140,6 +140,9 @@ module ElasticSearchable
140
140
  end
141
141
 
142
142
  private
143
+ def elasticsearch_offline?
144
+ ElasticSearchable.offline?
145
+ end
143
146
  # ripped from activesupport
144
147
  def evaluate_elastic_condition(method)
145
148
  case method
@@ -1,4 +1,4 @@
1
1
  module ElasticSearchable
2
- VERSION = '0.6.8'
2
+ VERSION = '0.7.0'
3
3
  end
4
4
 
@@ -28,6 +28,18 @@ module ElasticSearchable
28
28
  def logger
29
29
  @@logger
30
30
  end
31
+
32
+ # execute a block of work without reindexing objects
33
+ @@offline = false
34
+ def offline?
35
+ @@offline
36
+ end
37
+ def offline(&block)
38
+ @@offline = true
39
+ yield
40
+ ensure
41
+ @@offline = false
42
+ end
31
43
  # perform a request to the elasticsearch server
32
44
  # configuration:
33
45
  # ElasticSearchable.base_uri 'host:port' controls where to send request to
@@ -66,6 +66,22 @@ class TestElasticSearchable < Test::Unit::TestCase
66
66
  end
67
67
  end
68
68
 
69
+ context 'Model.create within ElasticSearchable.offline block' do
70
+ setup do
71
+ Post.any_instance.expects(:update_index_on_create).never
72
+ ElasticSearchable.offline do
73
+ @post = Post.create :title => 'foo', :body => "bar"
74
+ end
75
+ end
76
+ should 'not have triggered indexing behavior' do end #see expectations
77
+ should 'not have fired after_index callback' do
78
+ assert !@post.indexed?
79
+ end
80
+ should 'not have fired after_index_on_create callback' do
81
+ assert !@post.indexed_on_create?
82
+ end
83
+ end
84
+
69
85
  context 'with empty index when multiple database records' do
70
86
  setup do
71
87
  Post.delete_all
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elastic_searchable
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
4
+ hash: 3
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 6
9
- - 8
10
- version: 0.6.8
8
+ - 7
9
+ - 0
10
+ version: 0.7.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ryan Sonnek
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-13 00:00:00 Z
18
+ date: 2011-04-14 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: activerecord