sunspot_mongo_mapper 0.1.0 → 0.1.1
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/lib/sunspot/mongo_mapper.rb +20 -0
- data/lib/sunspot/mongo_mapper/railtie.rb +11 -0
- data/lib/sunspot/mongo_mapper/tasks.rb +24 -0
- data/lib/sunspot_mongo_mapper.rb +1 -0
- data/spec/spec_helper.rb +11 -0
- data/spec/sunspot_mongo_mapper_spec.rb +34 -0
- data/sunspot_mongo_mapper.gemspec +2 -1
- metadata +30 -10
data/lib/sunspot/mongo_mapper.rb
CHANGED
@@ -27,5 +27,25 @@ module Sunspot
|
|
27
27
|
@clazz.all(:id.in => ids)
|
28
28
|
end
|
29
29
|
end
|
30
|
+
|
31
|
+
module ClassMethods
|
32
|
+
def find_in_batches(options = {}, &block)
|
33
|
+
puts "finding in batches: #{options.inspect}"
|
34
|
+
batch_size = options.delete(:batch_size) || 1000
|
35
|
+
start = options.delete(:start) || 0
|
36
|
+
options.delete(:include)
|
37
|
+
records = []
|
38
|
+
|
39
|
+
query(options).skip(start).order(:id.asc).each do |record|
|
40
|
+
records << record
|
41
|
+
if records.size == batch_size
|
42
|
+
yield records
|
43
|
+
records = []
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
yield records unless records.blank?
|
48
|
+
end
|
49
|
+
end
|
30
50
|
end
|
31
51
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
Rake.application['sunspot:reindex'].clear
|
2
|
+
|
3
|
+
namespace :sunspot do
|
4
|
+
desc "Reindex all solr models that are located in your application's models directory."
|
5
|
+
task :reindex, [:batch_size, :models] => :environment do |t, args|
|
6
|
+
reindex_options = {:batch_commit => false}
|
7
|
+
case args[:batch_size]
|
8
|
+
when 'false'
|
9
|
+
reindex_options[:batch_size] = nil
|
10
|
+
when /^\d+$/
|
11
|
+
reindex_options[:batch_size] = args[:batch_size].to_i if args[:batch_size].to_i > 0
|
12
|
+
end
|
13
|
+
unless args[:models]
|
14
|
+
all_files = Dir.glob(Rails.root.join('app', 'models', '*.rb'))
|
15
|
+
all_models = all_files.map { |path| File.basename(path, '.rb').camelize.constantize }
|
16
|
+
sunspot_models = all_models.select { |m| m.respond_to?(:searchable?) && m.searchable? }
|
17
|
+
else
|
18
|
+
sunspot_models = args[:models].split('+').map{|m| m.constantize}
|
19
|
+
end
|
20
|
+
sunspot_models.each do |model|
|
21
|
+
model.solr_reindex reindex_options
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/sunspot_mongo_mapper.rb
CHANGED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Sunspot::MongoMapper do
|
4
|
+
class Post
|
5
|
+
include MongoMapper::Document
|
6
|
+
end
|
7
|
+
|
8
|
+
describe '.find_in_batches' do
|
9
|
+
before do
|
10
|
+
3.times {|i| Post.create!(:title => "Post #{i}") }
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should yield array of records in order' do
|
14
|
+
results = []
|
15
|
+
|
16
|
+
Post.find_in_batches(:batch_size => 2) do |records|
|
17
|
+
results << records
|
18
|
+
end
|
19
|
+
|
20
|
+
results[0].length.should == 2
|
21
|
+
results[1].length.should == 1
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'should pass conditions' do
|
25
|
+
results = []
|
26
|
+
Post.find_in_batches(:title => 'Post 1') do |records|
|
27
|
+
results.concat records
|
28
|
+
end
|
29
|
+
|
30
|
+
results.size.should == 1
|
31
|
+
results.first.title.should == 'Post 1'
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'sunspot_mongo_mapper'
|
5
|
-
s.version = '0.1.
|
5
|
+
s.version = '0.1.1'
|
6
6
|
s.authors = ['Brandon Keepers']
|
7
7
|
s.email = ['brandon@opensoul.org']
|
8
8
|
s.homepage = "https://github.com/bkeepers/sunspot_mongo_mapper"
|
@@ -17,6 +17,7 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.add_runtime_dependency 'mongo_mapper'
|
18
18
|
s.add_runtime_dependency 'sunspot', '~> 1.1'
|
19
19
|
s.add_runtime_dependency 'sunspot_rails', '~> 1.1'
|
20
|
+
s.add_runtime_dependency 'rails', '~> 3.0'
|
20
21
|
s.add_development_dependency 'rspec', '~> 2.0'
|
21
22
|
s.add_development_dependency 'rake'
|
22
23
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sunspot_mongo_mapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Brandon Keepers
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-11-
|
18
|
+
date: 2011-11-18 00:00:00 -05:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -63,9 +63,24 @@ dependencies:
|
|
63
63
|
type: :runtime
|
64
64
|
version_requirements: *id003
|
65
65
|
- !ruby/object:Gem::Dependency
|
66
|
-
name:
|
66
|
+
name: rails
|
67
67
|
prerelease: false
|
68
68
|
requirement: &id004 !ruby/object:Gem::Requirement
|
69
|
+
none: false
|
70
|
+
requirements:
|
71
|
+
- - ~>
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
hash: 7
|
74
|
+
segments:
|
75
|
+
- 3
|
76
|
+
- 0
|
77
|
+
version: "3.0"
|
78
|
+
type: :runtime
|
79
|
+
version_requirements: *id004
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: rspec
|
82
|
+
prerelease: false
|
83
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
69
84
|
none: false
|
70
85
|
requirements:
|
71
86
|
- - ~>
|
@@ -76,11 +91,11 @@ dependencies:
|
|
76
91
|
- 0
|
77
92
|
version: "2.0"
|
78
93
|
type: :development
|
79
|
-
version_requirements: *
|
94
|
+
version_requirements: *id005
|
80
95
|
- !ruby/object:Gem::Dependency
|
81
96
|
name: rake
|
82
97
|
prerelease: false
|
83
|
-
requirement: &
|
98
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
84
99
|
none: false
|
85
100
|
requirements:
|
86
101
|
- - ">="
|
@@ -90,7 +105,7 @@ dependencies:
|
|
90
105
|
- 0
|
91
106
|
version: "0"
|
92
107
|
type: :development
|
93
|
-
version_requirements: *
|
108
|
+
version_requirements: *id006
|
94
109
|
description: A Sunspot wrapper for MongoMapper.
|
95
110
|
email:
|
96
111
|
- brandon@opensoul.org
|
@@ -107,7 +122,11 @@ files:
|
|
107
122
|
- README.md
|
108
123
|
- Rakefile
|
109
124
|
- lib/sunspot/mongo_mapper.rb
|
125
|
+
- lib/sunspot/mongo_mapper/railtie.rb
|
126
|
+
- lib/sunspot/mongo_mapper/tasks.rb
|
110
127
|
- lib/sunspot_mongo_mapper.rb
|
128
|
+
- spec/spec_helper.rb
|
129
|
+
- spec/sunspot_mongo_mapper_spec.rb
|
111
130
|
- sunspot_mongo_mapper.gemspec
|
112
131
|
has_rdoc: true
|
113
132
|
homepage: https://github.com/bkeepers/sunspot_mongo_mapper
|
@@ -143,5 +162,6 @@ rubygems_version: 1.6.1
|
|
143
162
|
signing_key:
|
144
163
|
specification_version: 3
|
145
164
|
summary: A Sunspot wrapper for MongoMapper.
|
146
|
-
test_files:
|
147
|
-
|
165
|
+
test_files:
|
166
|
+
- spec/spec_helper.rb
|
167
|
+
- spec/sunspot_mongo_mapper_spec.rb
|