lifesaver 0.1.0 → 0.2.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.
- checksums.yaml +7 -0
- data/.travis.yml +2 -0
- data/CHANGELOG.md +6 -0
- data/Gemfile +2 -1
- data/LICENSE.txt +1 -1
- data/lib/lifesaver.rb +1 -1
- data/lib/lifesaver/config.rb +0 -1
- data/lib/lifesaver/indexing/enqueuer.rb +2 -2
- data/lib/lifesaver/indexing/indexer.rb +3 -3
- data/lib/lifesaver/indexing/model_additions.rb +4 -14
- data/lib/lifesaver/notification/dependent_associations.rb +25 -0
- data/lib/lifesaver/notification/enqueuer.rb +0 -1
- data/lib/lifesaver/notification/indexing_graph.rb +0 -1
- data/lib/lifesaver/notification/model_additions.rb +24 -26
- data/lib/lifesaver/version.rb +1 -1
- data/lifesaver.gemspec +9 -3
- data/spec/spec_helper.rb +10 -7
- data/spec/support/active_record.rb +1 -1
- data/spec/support/test_models.rb +0 -1
- data/spec/unit/indexing/indexer_spec.rb +5 -5
- data/spec/unit/indexing/model_addtions_spec.rb +1 -1
- data/spec/unit/notification/dependent_associations_spec.rb +19 -0
- data/spec/unit/notification/eager_loader_spec.rb +1 -1
- data/spec/unit/notification/enqueuer_spec.rb +1 -1
- data/spec/unit/notification/indexing_graph_spec.rb +17 -12
- data/spec/unit/notification/model_additions_spec.rb +1 -1
- metadata +26 -46
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9bc5ae6fa37c95384baa2d84547befd3c5a0282f
|
4
|
+
data.tar.gz: 2621e730f6b6c4fa8f7213873bd3db0ae124b7c9
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ba8c78edffbe3c973c12984e1ba427e98660100e4affc287bdcfec4cfda3fa51cb5ac0621895dfad6e10c70a320fbf74446ca3585c15de04b038a0c326403407
|
7
|
+
data.tar.gz: 582b6799eb17992424a312b32788c49d960ac8f1984029a05a3e8e5e93ee0a761629c2e07fbdd1a88f426e674e892c763f506fa524373a90d03857fbd871991c
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/LICENSE.txt
CHANGED
data/lib/lifesaver.rb
CHANGED
@@ -5,6 +5,7 @@ require 'lifesaver/serialized_model'
|
|
5
5
|
require 'lifesaver/indexing/model_additions'
|
6
6
|
require 'lifesaver/indexing/enqueuer'
|
7
7
|
require 'lifesaver/indexing/indexer'
|
8
|
+
require 'lifesaver/notification/dependent_associations'
|
8
9
|
require 'lifesaver/notification/notifiable_associations'
|
9
10
|
require 'lifesaver/notification/model_additions'
|
10
11
|
require 'lifesaver/notification/eager_loader'
|
@@ -43,5 +44,4 @@ module Lifesaver
|
|
43
44
|
def configure
|
44
45
|
yield config
|
45
46
|
end
|
46
|
-
|
47
47
|
end
|
data/lib/lifesaver/config.rb
CHANGED
@@ -2,9 +2,9 @@ module Lifesaver
|
|
2
2
|
module Indexing
|
3
3
|
class Indexer
|
4
4
|
def initialize(args)
|
5
|
-
@class_name = args
|
6
|
-
@model_id = args
|
7
|
-
@operation = args
|
5
|
+
@class_name = args.fetch(:class_name)
|
6
|
+
@model_id = args.fetch(:model_id)
|
7
|
+
@operation = args.fetch(:operation).to_sym
|
8
8
|
end
|
9
9
|
|
10
10
|
def perform
|
@@ -3,18 +3,8 @@ module Lifesaver
|
|
3
3
|
module ModelAdditions
|
4
4
|
module ClassMethods
|
5
5
|
def enqueues_indexing
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
private
|
10
|
-
|
11
|
-
def indexing_callbacks(options = {})
|
12
|
-
# after_commit?
|
13
|
-
after_save do
|
14
|
-
send :enqueue_indexing, options.merge(operation: :update)
|
15
|
-
end
|
16
|
-
after_destroy do
|
17
|
-
send :enqueue_indexing, options.merge(operation: :destroy)
|
6
|
+
after_commit do
|
7
|
+
send :enqueue_indexing
|
18
8
|
end
|
19
9
|
end
|
20
10
|
end
|
@@ -41,8 +31,8 @@ module Lifesaver
|
|
41
31
|
|
42
32
|
private
|
43
33
|
|
44
|
-
def enqueue_indexing
|
45
|
-
operation =
|
34
|
+
def enqueue_indexing
|
35
|
+
operation = destroyed? ? :destroy : :update
|
46
36
|
Lifesaver::Indexing::Enqueuer.new(model: self,
|
47
37
|
operation: operation).enqueue
|
48
38
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Lifesaver
|
2
|
+
module Notification
|
3
|
+
class DependentAssociations
|
4
|
+
def initialize(klass)
|
5
|
+
@class = klass
|
6
|
+
end
|
7
|
+
|
8
|
+
def fetch
|
9
|
+
@dependent_associations ||= populate
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def populate
|
15
|
+
dependent_associations = []
|
16
|
+
@class.reflect_on_all_associations.each do |association|
|
17
|
+
if association.options[:dependent].present?
|
18
|
+
dependent_associations << association.name.to_sym
|
19
|
+
end
|
20
|
+
end
|
21
|
+
dependent_associations
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -16,11 +16,11 @@ module Lifesaver
|
|
16
16
|
private
|
17
17
|
|
18
18
|
def notification_callbacks
|
19
|
-
after_save do
|
20
|
-
send :update_associations, :update
|
21
|
-
end
|
22
19
|
before_destroy do
|
23
|
-
send :
|
20
|
+
send :load_associations, :destroy
|
21
|
+
end
|
22
|
+
after_commit do
|
23
|
+
send :update_associations
|
24
24
|
end
|
25
25
|
end
|
26
26
|
end
|
@@ -28,19 +28,23 @@ module Lifesaver
|
|
28
28
|
def self.included(base)
|
29
29
|
base.class_attribute :notifiable_associations
|
30
30
|
base.notifiable_associations = NotifiableAssociations.new
|
31
|
+
base.delegate :notifiable_associations, to: :class
|
32
|
+
base.class_attribute :dependent_associations
|
33
|
+
base.dependent_associations = DependentAssociations.new(base)
|
34
|
+
base.delegate :dependent_associations, to: :class
|
31
35
|
base.extend(ClassMethods)
|
32
36
|
end
|
33
37
|
|
34
38
|
def associations_to_notify
|
35
39
|
models = []
|
36
|
-
|
40
|
+
notifiable_associations.on_notify.each do |association|
|
37
41
|
models |= models_for_association(association)
|
38
42
|
end
|
39
43
|
models
|
40
44
|
end
|
41
45
|
|
42
46
|
def needs_to_notify?
|
43
|
-
|
47
|
+
notifiable_associations.any_to_notify?
|
44
48
|
end
|
45
49
|
|
46
50
|
def models_for_association(assoc)
|
@@ -60,31 +64,26 @@ module Lifesaver
|
|
60
64
|
|
61
65
|
private
|
62
66
|
|
63
|
-
def update_associations
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
models = []
|
68
|
-
to_load.each { |key| models |= models_for_association(key) }
|
67
|
+
def update_associations
|
68
|
+
operation = destroyed? ? :destroy : :update
|
69
|
+
models = load_associations(operation)
|
69
70
|
serialized_models = serialize_models(models)
|
70
71
|
enqueue_worker(serialized_models)
|
72
|
+
@loaded_associations = nil
|
71
73
|
end
|
72
74
|
|
73
|
-
def
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
75
|
+
def load_associations(operation)
|
76
|
+
return @loaded_associations unless @loaded_associations.nil?
|
77
|
+
@loaded_associations = []
|
78
|
+
to_skip = operation == :destroy ? dependent_associations.fetch : []
|
79
|
+
to_load = associations_to_load(:on_change, to_skip)
|
80
|
+
to_load.each { |key| @loaded_associations |= models_for_association(key) }
|
81
|
+
@loaded_associations
|
78
82
|
end
|
79
83
|
|
80
|
-
def
|
81
|
-
|
82
|
-
|
83
|
-
if association.options[:dependent].present?
|
84
|
-
dependent_associations << association.name.to_sym
|
85
|
-
end
|
86
|
-
end
|
87
|
-
dependent_associations
|
84
|
+
def associations_to_load(key, associations_to_skip)
|
85
|
+
associations = notifiable_associations.public_send(key)
|
86
|
+
associations - associations_to_skip
|
88
87
|
end
|
89
88
|
|
90
89
|
def serialize_models(models)
|
@@ -98,7 +97,6 @@ module Lifesaver
|
|
98
97
|
def enqueue_worker(serialized_models)
|
99
98
|
Lifesaver::Notification::Enqueuer.new(serialized_models).enqueue
|
100
99
|
end
|
101
|
-
|
102
100
|
end
|
103
101
|
end
|
104
102
|
end
|
data/lib/lifesaver/version.rb
CHANGED
data/lifesaver.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.version = Lifesaver::VERSION
|
9
9
|
spec.authors = ["Paul Sorensen"]
|
10
10
|
spec.email = ["paulnsorensen@gmail.com"]
|
11
|
-
spec.description = %q{
|
12
|
-
spec.summary = %q{
|
11
|
+
spec.description = %q{Asynchronously sends your ActiveRecord models for reindexing in elasticsearch by making use of tire and resque}
|
12
|
+
spec.summary = %q{Asynchronously sends your ActiveRecord models for reindexing in elasticsearch by making use of tire and resque}
|
13
13
|
spec.homepage = ""
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
@@ -22,10 +22,16 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.add_development_dependency "bundler", "~> 1.3"
|
23
23
|
spec.add_development_dependency "rake"
|
24
24
|
spec.add_development_dependency "rspec"
|
25
|
-
spec.add_development_dependency "activerecord"
|
26
25
|
spec.add_development_dependency "sqlite3"
|
26
|
+
spec.add_development_dependency "database_cleaner"
|
27
27
|
spec.add_runtime_dependency 'activerecord', '>= 3'
|
28
28
|
spec.add_runtime_dependency 'tire', '~> 0.6.0'
|
29
29
|
spec.add_runtime_dependency 'resque', '~> 1.25.0'
|
30
30
|
spec.add_runtime_dependency 'resque-loner', '~> 1.2.1'
|
31
|
+
|
32
|
+
if RUBY_ENGINE == 'rbx'
|
33
|
+
spec.add_development_dependency 'racc'
|
34
|
+
spec.add_development_dependency 'rubysl', '~> 2.0'
|
35
|
+
spec.add_development_dependency 'json'
|
36
|
+
end
|
31
37
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
require 'pry'
|
2
|
-
require '
|
3
|
-
|
2
|
+
require 'database_cleaner'
|
3
|
+
|
4
|
+
if ENV['RUN_COVERALLS'] && RUBY_ENGINE != 'rbx'
|
5
|
+
require 'coveralls'
|
6
|
+
Coveralls.wear!
|
7
|
+
end
|
4
8
|
|
5
9
|
require 'lifesaver'
|
6
10
|
|
@@ -20,10 +24,9 @@ RSpec.configure do |config|
|
|
20
24
|
c.syntax = :expect
|
21
25
|
end
|
22
26
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
end
|
27
|
+
DatabaseCleaner.strategy = :truncation
|
28
|
+
|
29
|
+
config.after(:each) do
|
30
|
+
DatabaseCleaner.clean
|
28
31
|
end
|
29
32
|
end
|
data/spec/support/test_models.rb
CHANGED
@@ -5,15 +5,15 @@ describe Lifesaver::Indexing::Indexer do
|
|
5
5
|
let(:index) { double('index', remove: nil, store: nil) }
|
6
6
|
let(:index_name) { 'test-index-name' }
|
7
7
|
before do
|
8
|
-
Model.
|
9
|
-
Tire.
|
8
|
+
allow(Model).to receive(:index_name).and_return(index_name)
|
9
|
+
allow(Tire).to receive(:index).with(index_name).and_return(index)
|
10
10
|
end
|
11
11
|
|
12
12
|
context 'when operation is update' do
|
13
13
|
let(:model) { Model.new(1) }
|
14
14
|
before do
|
15
|
-
Model.
|
16
|
-
Model.
|
15
|
+
allow(Model).to receive(:exists?).with('1').and_return(true)
|
16
|
+
allow(Model).to receive(:find).with('1').and_return(model)
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'calls tire with the correct arguments' do
|
@@ -31,7 +31,7 @@ describe Lifesaver::Indexing::Indexer do
|
|
31
31
|
|
32
32
|
context 'when operation is destroy' do
|
33
33
|
before do
|
34
|
-
Model.
|
34
|
+
allow(Model).to receive(:document_type).and_return('class')
|
35
35
|
end
|
36
36
|
|
37
37
|
it 'calls tire with the correct arguments' do
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
class DummyClass < ActiveRecord::Base
|
4
|
+
has_many :foo, dependent: :destroy
|
5
|
+
has_one :bar
|
6
|
+
belongs_to :baz, dependent: :delete
|
7
|
+
end
|
8
|
+
|
9
|
+
describe Lifesaver::Notification::DependentAssociations do
|
10
|
+
let(:dependent_associations) do
|
11
|
+
Lifesaver::Notification::DependentAssociations.new(DummyClass)
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#fetch' do
|
15
|
+
it 'returns association keys that are dependent' do
|
16
|
+
expect(dependent_associations.fetch).to eql([:foo, :baz])
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -34,7 +34,7 @@ describe Lifesaver::Notification::EagerLoader do
|
|
34
34
|
|
35
35
|
describe '#load' do
|
36
36
|
before do
|
37
|
-
Post.
|
37
|
+
allow(Post).to receive(:load_with_notifiable_associations).and_return([])
|
38
38
|
eager_loader.add_model('Post', 34)
|
39
39
|
eager_loader.add_model('Post', 38)
|
40
40
|
end
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Lifesaver::Notification::Enqueuer do
|
4
4
|
let(:models) { [Lifesaver::SerializedModel.new('TestClass', '3')] }
|
5
5
|
let(:enqueuer) { Lifesaver::Notification::Enqueuer.new(models) }
|
6
|
-
before {
|
6
|
+
before { allow(Resque).to receive(:enqueue) }
|
7
7
|
|
8
8
|
describe '#enqueue' do
|
9
9
|
context 'when indexing is not suppressed' do
|
@@ -5,7 +5,7 @@ describe Lifesaver::Notification::IndexingGraph do
|
|
5
5
|
|
6
6
|
describe '#initalize_models' do
|
7
7
|
it 'should load serialized models into the loader' do
|
8
|
-
indexing_graph.
|
8
|
+
allow(indexing_graph).to receive(:add_model_to_loader)
|
9
9
|
serialized_models = []
|
10
10
|
serialized_models << Lifesaver::SerializedModel.new('Post', 14)
|
11
11
|
|
@@ -18,13 +18,14 @@ describe Lifesaver::Notification::IndexingGraph do
|
|
18
18
|
describe '#generate' do
|
19
19
|
context 'when queue is empty' do
|
20
20
|
before do
|
21
|
-
indexing_graph.
|
21
|
+
allow(indexing_graph).to receive(:queue_full?).and_return(false)
|
22
22
|
end
|
23
23
|
|
24
24
|
context 'and loader is empty' do
|
25
25
|
it 'exits and returns models_to_index' do
|
26
|
-
indexing_graph.
|
27
|
-
indexing_graph.
|
26
|
+
allow(indexing_graph).to receive(:loader_full?).and_return(false)
|
27
|
+
allow(indexing_graph).to receive(:models_to_index)
|
28
|
+
.and_return([Model.new(15)])
|
28
29
|
|
29
30
|
expect(indexing_graph.generate).to eql([Model.new(15)])
|
30
31
|
end
|
@@ -32,8 +33,9 @@ describe Lifesaver::Notification::IndexingGraph do
|
|
32
33
|
|
33
34
|
context 'and loader is not empty' do
|
34
35
|
it 'calls load_into_queue' do
|
35
|
-
indexing_graph.
|
36
|
-
|
36
|
+
allow(indexing_graph).to receive(:loader_full?)
|
37
|
+
.and_return(true, false)
|
38
|
+
allow(indexing_graph).to receive(:load_into_queue)
|
37
39
|
|
38
40
|
expect(indexing_graph).to receive(:load_into_queue)
|
39
41
|
|
@@ -44,25 +46,28 @@ describe Lifesaver::Notification::IndexingGraph do
|
|
44
46
|
|
45
47
|
context 'when queue is not empty' do
|
46
48
|
before do
|
47
|
-
indexing_graph.
|
48
|
-
indexing_graph.
|
49
|
-
indexing_graph.
|
49
|
+
allow(indexing_graph).to receive(:queue_full?).and_return(true, false)
|
50
|
+
allow(indexing_graph).to receive(:pop_model).and_return(Model.new(1))
|
51
|
+
allow(indexing_graph).to receive(:add_unvisited_associations)
|
50
52
|
end
|
51
53
|
|
52
54
|
it 'adds model if should be indexed' do
|
53
|
-
indexing_graph.
|
55
|
+
allow(indexing_graph).to receive(:model_should_be_indexed?)
|
56
|
+
.and_return(true)
|
54
57
|
|
55
58
|
expect(indexing_graph.generate).to eql([Model.new(1)])
|
56
59
|
end
|
57
60
|
|
58
61
|
it 'does not add a model if it should not be indexed' do
|
59
|
-
indexing_graph.
|
62
|
+
allow(indexing_graph).to receive(:model_should_be_indexed?)
|
63
|
+
.and_return(false)
|
60
64
|
|
61
65
|
expect(indexing_graph.generate).to eql([])
|
62
66
|
end
|
63
67
|
|
64
68
|
it 'adds unvisited associations to the graph' do
|
65
|
-
indexing_graph.
|
69
|
+
allow(indexing_graph).to receive(:model_should_be_indexed?)
|
70
|
+
.and_return(false)
|
66
71
|
|
67
72
|
expect(indexing_graph).to receive(:add_unvisited_associations)
|
68
73
|
|
metadata
CHANGED
@@ -1,20 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lifesaver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Paul Sorensen
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-01-30 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
@@ -22,7 +20,6 @@ dependencies:
|
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
@@ -30,87 +27,76 @@ dependencies:
|
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rspec
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
|
-
name:
|
56
|
+
name: sqlite3
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
|
-
name:
|
70
|
+
name: database_cleaner
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - '>='
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - '>='
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: activerecord
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - '>='
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '3'
|
102
90
|
type: :runtime
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - '>='
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '3'
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
98
|
name: tire
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
101
|
- - ~>
|
116
102
|
- !ruby/object:Gem::Version
|
@@ -118,7 +104,6 @@ dependencies:
|
|
118
104
|
type: :runtime
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
108
|
- - ~>
|
124
109
|
- !ruby/object:Gem::Version
|
@@ -126,7 +111,6 @@ dependencies:
|
|
126
111
|
- !ruby/object:Gem::Dependency
|
127
112
|
name: resque
|
128
113
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
114
|
requirements:
|
131
115
|
- - ~>
|
132
116
|
- !ruby/object:Gem::Version
|
@@ -134,7 +118,6 @@ dependencies:
|
|
134
118
|
type: :runtime
|
135
119
|
prerelease: false
|
136
120
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
121
|
requirements:
|
139
122
|
- - ~>
|
140
123
|
- !ruby/object:Gem::Version
|
@@ -142,7 +125,6 @@ dependencies:
|
|
142
125
|
- !ruby/object:Gem::Dependency
|
143
126
|
name: resque-loner
|
144
127
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
128
|
requirements:
|
147
129
|
- - ~>
|
148
130
|
- !ruby/object:Gem::Version
|
@@ -150,13 +132,12 @@ dependencies:
|
|
150
132
|
type: :runtime
|
151
133
|
prerelease: false
|
152
134
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
135
|
requirements:
|
155
136
|
- - ~>
|
156
137
|
- !ruby/object:Gem::Version
|
157
138
|
version: 1.2.1
|
158
|
-
description:
|
159
|
-
use of tire and resque
|
139
|
+
description: Asynchronously sends your ActiveRecord models for reindexing in elasticsearch
|
140
|
+
by making use of tire and resque
|
160
141
|
email:
|
161
142
|
- paulnsorensen@gmail.com
|
162
143
|
executables: []
|
@@ -178,6 +159,7 @@ files:
|
|
178
159
|
- lib/lifesaver/indexing/enqueuer.rb
|
179
160
|
- lib/lifesaver/indexing/indexer.rb
|
180
161
|
- lib/lifesaver/indexing/model_additions.rb
|
162
|
+
- lib/lifesaver/notification/dependent_associations.rb
|
181
163
|
- lib/lifesaver/notification/eager_loader.rb
|
182
164
|
- lib/lifesaver/notification/enqueuer.rb
|
183
165
|
- lib/lifesaver/notification/indexing_graph.rb
|
@@ -197,6 +179,7 @@ files:
|
|
197
179
|
- spec/unit/config_spec.rb
|
198
180
|
- spec/unit/indexing/indexer_spec.rb
|
199
181
|
- spec/unit/indexing/model_addtions_spec.rb
|
182
|
+
- spec/unit/notification/dependent_associations_spec.rb
|
200
183
|
- spec/unit/notification/eager_loader_spec.rb
|
201
184
|
- spec/unit/notification/enqueuer_spec.rb
|
202
185
|
- spec/unit/notification/indexing_graph_spec.rb
|
@@ -206,32 +189,28 @@ files:
|
|
206
189
|
homepage: ''
|
207
190
|
licenses:
|
208
191
|
- MIT
|
192
|
+
metadata: {}
|
209
193
|
post_install_message:
|
210
194
|
rdoc_options: []
|
211
195
|
require_paths:
|
212
196
|
- lib
|
213
197
|
required_ruby_version: !ruby/object:Gem::Requirement
|
214
|
-
none: false
|
215
198
|
requirements:
|
216
|
-
- -
|
199
|
+
- - '>='
|
217
200
|
- !ruby/object:Gem::Version
|
218
201
|
version: '1.9'
|
219
202
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
220
|
-
none: false
|
221
203
|
requirements:
|
222
|
-
- -
|
204
|
+
- - '>='
|
223
205
|
- !ruby/object:Gem::Version
|
224
206
|
version: '0'
|
225
|
-
segments:
|
226
|
-
- 0
|
227
|
-
hash: -3695998717918674218
|
228
207
|
requirements: []
|
229
208
|
rubyforge_project:
|
230
|
-
rubygems_version:
|
209
|
+
rubygems_version: 2.2.0
|
231
210
|
signing_key:
|
232
|
-
specification_version:
|
233
|
-
summary:
|
234
|
-
use of tire and resque
|
211
|
+
specification_version: 4
|
212
|
+
summary: Asynchronously sends your ActiveRecord models for reindexing in elasticsearch
|
213
|
+
by making use of tire and resque
|
235
214
|
test_files:
|
236
215
|
- spec/integration/lifesaver_spec.rb
|
237
216
|
- spec/spec_helper.rb
|
@@ -241,6 +220,7 @@ test_files:
|
|
241
220
|
- spec/unit/config_spec.rb
|
242
221
|
- spec/unit/indexing/indexer_spec.rb
|
243
222
|
- spec/unit/indexing/model_addtions_spec.rb
|
223
|
+
- spec/unit/notification/dependent_associations_spec.rb
|
244
224
|
- spec/unit/notification/eager_loader_spec.rb
|
245
225
|
- spec/unit/notification/enqueuer_spec.rb
|
246
226
|
- spec/unit/notification/indexing_graph_spec.rb
|