sunspot_rails 0.10.5 → 0.10.7

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
- :minor: 10
3
- :patch: 5
4
2
  :major: 0
3
+ :minor: 10
4
+ :patch: 7
@@ -6,7 +6,14 @@ begin
6
6
  s.summary = 'Rails integration for the Sunspot Solr search library'
7
7
  s.email = 'mat@patch.com'
8
8
  s.homepage = 'http://github.com/outoftime/sunspot_rails'
9
- s.description = 'Rails integration for the Sunspot Solr search library'
9
+ s.description = <<TEXT
10
+ Sunspot::Rails is an extension to the Sunspot library for Solr search.
11
+ Sunspot::Rails adds integration between Sunspot and ActiveRecord, including
12
+ defining search and indexing related methods on ActiveRecord models themselves,
13
+ running a Sunspot-compatible Solr instance for development and test
14
+ environments, and automatically commit Solr index changes at the end of each
15
+ Rails request.
16
+ TEXT
10
17
  s.authors = ['Mat Brown', 'Peer Allan', 'Michael Moen', 'Benjamin Krause']
11
18
  s.rubyforge_project = 'sunspot'
12
19
  s.files = FileList['[A-Z]*',
@@ -17,12 +24,19 @@ begin
17
24
  'spec/*.rb',
18
25
  'spec/mock_app/{app,lib,db,vendor,config}/**/*',
19
26
  'spec/mock_app/{tmp,log,solr}']
20
- s.add_dependency 'rails', '~> 2.1'
21
27
  s.add_dependency 'escape', '>= 0.0.4'
22
- s.add_dependency 'outoftime-sunspot', '>= 0.8.2'
28
+ s.add_dependency 'sunspot', '~> 0.10.0'
23
29
  s.add_development_dependency 'rspec', '~> 1.2'
24
30
  s.add_development_dependency 'rspec-rails', '~> 1.2'
25
31
  s.add_development_dependency 'ruby-debug', '~> 0.10'
26
32
  s.add_development_dependency 'technicalpickles-jeweler', '~> 1.0'
27
33
  end
34
+
35
+ Jeweler::RubyforgeTasks.new
36
+ Jeweler::GemcutterTasks.new
37
+ end
38
+
39
+ namespace :release do
40
+ desc "Release gem to RubyForge and GitHub"
41
+ task :all => [:"rubyforge:release:gem", :"gemcutter:release"]
28
42
  end
@@ -9,7 +9,7 @@ module Sunspot #:nodoc:
9
9
  class <<self
10
10
  def included(base) #:nodoc:
11
11
  base.after_filter do
12
- Sunspot.commit_if_dirty if Sunspot::Rails.configuration.auto_commit_after_request?
12
+ Sunspot::Rails.session.commit_if_dirty if Sunspot::Rails.configuration.auto_commit_after_request?
13
13
  end
14
14
  end
15
15
  end
@@ -104,7 +104,7 @@ module Sunspot #:nodoc:
104
104
  # Sunspot::Search:: Object containing results, totals, facets, etc.
105
105
  #
106
106
  def search(&block)
107
- Sunspot.search(self, &block)
107
+ Sunspot::Rails.session.search(self, &block)
108
108
  end
109
109
 
110
110
  #
@@ -125,7 +125,7 @@ module Sunspot #:nodoc:
125
125
  # Remove instances of this class from the Solr index.
126
126
  #
127
127
  def remove_all_from_index
128
- Sunspot.remove_all(self)
128
+ Sunspot::Rails.session.remove_all(self)
129
129
  end
130
130
 
131
131
  #
@@ -136,8 +136,8 @@ module Sunspot #:nodoc:
136
136
  # XXX Sunspot should implement remove_all!()
137
137
  #
138
138
  def remove_all_from_index!
139
- Sunspot.remove_all(self)
140
- Sunspot.commit
139
+ remove_all_from_index
140
+ Sunspot::Rails.session.commit
141
141
  end
142
142
 
143
143
  #
@@ -180,20 +180,20 @@ module Sunspot #:nodoc:
180
180
  options = { :batch_size => 500, :batch_commit => true, :include => []}.merge(opts)
181
181
  remove_all_from_index
182
182
  unless options[:batch_size]
183
- Sunspot.index!(all(:include => options[:include]))
183
+ Sunspot::Rails.session.index!(all(:include => options[:include]))
184
184
  else
185
185
  record_count = count
186
186
  counter = 1
187
187
  offset = 0
188
188
  while(offset < record_count)
189
189
  benchmark options[:batch_size], counter do
190
- Sunspot.index(all(:include => options[:include], :offset => offset, :limit => options[:batch_size], :order => primary_key))
190
+ Sunspot::Rails.session.index(all(:include => options[:include], :offset => offset, :limit => options[:batch_size], :order => primary_key))
191
191
  end
192
- Sunspot.commit if options[:batch_commit]
192
+ Sunspot::Rails.session.commit if options[:batch_commit]
193
193
  offset += options[:batch_size]
194
194
  counter += 1
195
195
  end
196
- Sunspot.commit unless options[:batch_commit]
196
+ Sunspot::Rails.session.commit unless options[:batch_commit]
197
197
  end
198
198
  end
199
199
 
@@ -267,14 +267,14 @@ module Sunspot #:nodoc:
267
267
  # manually.
268
268
  #
269
269
  def index
270
- Sunspot.index(self)
270
+ Sunspot::Rails.session.index(self)
271
271
  end
272
272
 
273
273
  #
274
274
  # Index the model in Solr and immediately commit. See #index
275
275
  #
276
276
  def index!
277
- Sunspot.index!(self)
277
+ Sunspot::Rails.session.index!(self)
278
278
  end
279
279
 
280
280
  #
@@ -285,19 +285,15 @@ module Sunspot #:nodoc:
285
285
  # manually.
286
286
  #
287
287
  def remove_from_index
288
- Sunspot.remove(self)
288
+ Sunspot::Rails.session.remove(self)
289
289
  end
290
290
 
291
291
  #
292
292
  # Remove the model from the Solr index and commit immediately. See
293
293
  # #remove_from_index
294
294
  #
295
- #---
296
- #FIXME Sunspot should implement remove!()
297
- #
298
295
  def remove_from_index!
299
- Sunspot.remove(self)
300
- Sunspot.commit
296
+ Sunspot::Rails.session.remove!(self)
301
297
  end
302
298
  end
303
299
  end
@@ -16,7 +16,7 @@ namespace :sunspot do
16
16
  [data_path, pid_path].each { |path| FileUtils.mkdir_p(path) }
17
17
  port = Sunspot::Rails.configuration.port
18
18
  FileUtils.cd(File.join(pid_path)) do
19
- command = ['sunspot-solr', 'start', '--', '-p', port.to_s, '-d', data_path]
19
+ command = ['sunspot-solr', 'start', '-p', port.to_s, '-d', data_path]
20
20
  if solr_home
21
21
  command << '-s' << solr_home
22
22
  end
@@ -33,7 +33,7 @@ namespace :sunspot do
33
33
  end
34
34
  FileUtils.mkdir_p(data_path)
35
35
  port = Sunspot::Rails.configuration.port
36
- command = ['sunspot-solr', 'run', '--', '-p', port.to_s, '-d', data_path]
36
+ command = ['sunspot-solr', 'run', '-p', port.to_s, '-d', data_path]
37
37
  if RUBY_PLATFORM =~ /w(in)?32$/
38
38
  command.first << '.bat'
39
39
  end
data/lib/sunspot/rails.rb CHANGED
@@ -8,6 +8,19 @@ module Sunspot #:nodoc:
8
8
  def configuration
9
9
  @configuration ||= Sunspot::Rails::Configuration.new
10
10
  end
11
+
12
+ def session
13
+ Thread.current[:sunspot_rails_session] ||=
14
+ begin
15
+ session = Sunspot::Session.new
16
+ session.config.solr.url = URI::HTTP.build(
17
+ :host => configuration.hostname,
18
+ :port => configuration.port,
19
+ :path => configuration.path
20
+ ).to_s
21
+ session
22
+ end
23
+ end
11
24
  end
12
25
  end
13
26
  end
data/rails/init.rb CHANGED
@@ -1,9 +1,5 @@
1
1
  require 'sunspot'
2
2
 
3
- Sunspot.config.solr.url = URI::HTTP.build(:host => Sunspot::Rails.configuration.hostname,
4
- :port => Sunspot::Rails.configuration.port,
5
- :path => Sunspot::Rails.configuration.path).to_s
6
-
7
3
  Sunspot::Adapters::InstanceAdapter.register(Sunspot::Rails::Adapters::ActiveRecordInstanceAdapter, ActiveRecord::Base)
8
4
  Sunspot::Adapters::DataAccessor.register(Sunspot::Rails::Adapters::ActiveRecordDataAccessor, ActiveRecord::Base)
9
5
  ActiveRecord::Base.module_eval { include(Sunspot::Rails::Searchable) }
@@ -0,0 +1 @@
1
+ S
@@ -4,7 +4,7 @@ describe 'searchable with lifecycle' do
4
4
  describe 'on create' do
5
5
  before :each do
6
6
  @post = PostWithAuto.create
7
- Sunspot.commit
7
+ Sunspot::Rails.session.commit
8
8
  end
9
9
 
10
10
  it 'should automatically index' do
@@ -16,7 +16,7 @@ describe 'searchable with lifecycle' do
16
16
  before :each do
17
17
  @post = PostWithAuto.create
18
18
  @post.update_attributes(:title => 'Test 1')
19
- Sunspot.commit
19
+ Sunspot::Rails.session.commit
20
20
  end
21
21
 
22
22
  it 'should automatically update index' do
@@ -28,7 +28,7 @@ describe 'searchable with lifecycle' do
28
28
  before :each do
29
29
  @post = PostWithAuto.create
30
30
  @post.destroy
31
- Sunspot.commit
31
+ Sunspot::Rails.session.commit
32
32
  end
33
33
 
34
34
  it 'should automatically remove it from the index' do
data/spec/model_spec.rb CHANGED
@@ -12,7 +12,7 @@ describe 'ActiveRecord mixin' do
12
12
  end
13
13
 
14
14
  it 'should index the model' do
15
- Sunspot.commit
15
+ Sunspot::Rails.session.commit
16
16
  Post.search.results.should == [@post]
17
17
  end
18
18
  end
@@ -40,7 +40,7 @@ describe 'ActiveRecord mixin' do
40
40
  end
41
41
 
42
42
  it 'should remove the model from the index' do
43
- Sunspot.commit
43
+ Sunspot::Rails.session.commit
44
44
  Post.search.results.should be_empty
45
45
  end
46
46
  end
@@ -59,8 +59,8 @@ describe 'ActiveRecord mixin' do
59
59
 
60
60
  describe 'remove_all_from_index' do
61
61
  before :each do
62
- @posts = Array.new(10) { Post.create! }.each { |post| Sunspot.index(post) }
63
- Sunspot.commit
62
+ @posts = Array.new(10) { Post.create! }.each { |post| Sunspot::Rails.session.index(post) }
63
+ Sunspot::Rails.session.commit
64
64
  Post.remove_all_from_index
65
65
  end
66
66
 
@@ -69,15 +69,15 @@ describe 'ActiveRecord mixin' do
69
69
  end
70
70
 
71
71
  it 'should remove all instances from the index' do
72
- Sunspot.commit
72
+ Sunspot::Rails.session.commit
73
73
  Post.search.results.should be_empty
74
74
  end
75
75
  end
76
76
 
77
77
  describe 'remove_all_from_index!' do
78
78
  before :each do
79
- Array.new(10) { Post.create! }.each { |post| Sunspot.index(post) }
80
- Sunspot.commit
79
+ Array.new(10) { Post.create! }.each { |post| Sunspot::Rails.session.index(post) }
80
+ Sunspot::Rails.session.commit
81
81
  Post.remove_all_from_index!
82
82
  end
83
83
 
@@ -115,7 +115,7 @@ describe 'ActiveRecord mixin' do
115
115
  describe 'search_ids()' do
116
116
  before :each do
117
117
  @posts = Array.new(2) { Post.create! }.each { |post| post.index }
118
- Sunspot.commit
118
+ Sunspot::Rails.session.commit
119
119
  end
120
120
 
121
121
  it 'should return IDs' do
@@ -136,7 +136,7 @@ describe 'ActiveRecord mixin' do
136
136
  describe 'index_orphans()' do
137
137
  before :each do
138
138
  @posts = Array.new(2) { Post.create }.each { |post| post.index }
139
- Sunspot.commit
139
+ Sunspot::Rails.session.commit
140
140
  @posts.first.destroy
141
141
  end
142
142
 
@@ -148,13 +148,13 @@ describe 'ActiveRecord mixin' do
148
148
  describe 'clean_index_orphans()' do
149
149
  before :each do
150
150
  @posts = Array.new(2) { Post.create }.each { |post| post.index }
151
- Sunspot.commit
151
+ Sunspot::Rails.session.commit
152
152
  @posts.first.destroy
153
153
  end
154
154
 
155
155
  it 'should remove orphans from the index' do
156
156
  Post.clean_index_orphans
157
- Sunspot.commit
157
+ Sunspot::Rails.session.commit
158
158
  Post.search.results.should == [@posts.last]
159
159
  end
160
160
  end
@@ -166,7 +166,7 @@ describe 'ActiveRecord mixin' do
166
166
 
167
167
  it 'should index all instances' do
168
168
  Post.reindex(:batch_size => nil)
169
- Sunspot.commit
169
+ Sunspot::Rails.session.commit
170
170
  Post.search.results.to_set.should == @posts.to_set
171
171
  end
172
172
 
@@ -175,7 +175,7 @@ describe 'ActiveRecord mixin' do
175
175
  old_post.index!
176
176
  old_post.destroy
177
177
  Post.reindex
178
- Sunspot.commit
178
+ Sunspot::Rails.session.commit
179
179
  Post.search.results.to_set.should == @posts.to_set
180
180
  end
181
181
 
@@ -188,7 +188,7 @@ describe 'ActiveRecord mixin' do
188
188
 
189
189
  it 'should index all instances' do
190
190
  Post.reindex(:batch_size => nil)
191
- Sunspot.commit
191
+ Sunspot::Rails.session.commit
192
192
  Post.search.results.to_set.should == @posts.to_set
193
193
  end
194
194
 
@@ -197,14 +197,14 @@ describe 'ActiveRecord mixin' do
197
197
  old_post.index!
198
198
  old_post.destroy
199
199
  Post.reindex
200
- Sunspot.commit
200
+ Sunspot::Rails.session.commit
201
201
  Post.search.results.to_set.should == @posts.to_set
202
202
  end
203
203
 
204
204
  describe "using batch sizes" do
205
205
  it 'should index with a specified batch size' do
206
206
  Post.reindex(:batch_size => 1)
207
- Sunspot.commit
207
+ Sunspot::Rails.session.commit
208
208
  Post.search.results.to_set.should == @posts.to_set
209
209
  end
210
210
  end
@@ -263,12 +263,12 @@ describe 'ActiveRecord mixin' do
263
263
  end
264
264
 
265
265
  it "should commit after indexing each batch" do
266
- Sunspot.should_receive(:commit).twice
266
+ Sunspot::Rails.session.should_receive(:commit).twice
267
267
  Post.reindex(:batch_size => 5)
268
268
  end
269
269
 
270
270
  it "should commit after indexing everything" do
271
- Sunspot.should_receive(:commit).once
271
+ Sunspot::Rails.session.should_receive(:commit).once
272
272
  Post.reindex(:batch_commit => false)
273
273
  end
274
274
 
@@ -0,0 +1,11 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+
3
+ describe 'Sunspot::Rails session' do
4
+ it 'should be a different object for each thread' do
5
+ session1 = nil
6
+ session2 = nil
7
+ Thread.new { session1 = Sunspot::Rails.session }.join
8
+ Thread.new { session2 = Sunspot::Rails.session }.join
9
+ session1.should_not eql(session2)
10
+ end
11
+ end
data/spec/spec_helper.rb CHANGED
@@ -25,8 +25,8 @@ end
25
25
 
26
26
  Spec::Runner.configure do |config|
27
27
  config.before(:each) do
28
- Sunspot.remove_all
29
- Sunspot.commit
28
+ Sunspot::Rails.session.remove_all
29
+ Sunspot::Rails.session.commit
30
30
  load_schema
31
31
  end
32
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sunspot_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.5
4
+ version: 0.10.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mat Brown
@@ -12,19 +12,9 @@ autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
14
 
15
- date: 2009-08-28 00:00:00 -04:00
15
+ date: 2009-10-12 00:00:00 -04:00
16
16
  default_executable:
17
17
  dependencies:
18
- - !ruby/object:Gem::Dependency
19
- name: rails
20
- type: :runtime
21
- version_requirement:
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ~>
25
- - !ruby/object:Gem::Version
26
- version: "2.1"
27
- version:
28
18
  - !ruby/object:Gem::Dependency
29
19
  name: escape
30
20
  type: :runtime
@@ -36,14 +26,14 @@ dependencies:
36
26
  version: 0.0.4
37
27
  version:
38
28
  - !ruby/object:Gem::Dependency
39
- name: outoftime-sunspot
29
+ name: sunspot
40
30
  type: :runtime
41
31
  version_requirement:
42
32
  version_requirements: !ruby/object:Gem::Requirement
43
33
  requirements:
44
- - - ">="
34
+ - - ~>
45
35
  - !ruby/object:Gem::Version
46
- version: 0.8.2
36
+ version: 0.10.0
47
37
  version:
48
38
  - !ruby/object:Gem::Dependency
49
39
  name: rspec
@@ -85,7 +75,14 @@ dependencies:
85
75
  - !ruby/object:Gem::Version
86
76
  version: "1.0"
87
77
  version:
88
- description: Rails integration for the Sunspot Solr search library
78
+ description: |
79
+ Sunspot::Rails is an extension to the Sunspot library for Solr search.
80
+ Sunspot::Rails adds integration between Sunspot and ActiveRecord, including
81
+ defining search and indexing related methods on ActiveRecord models themselves,
82
+ running a Sunspot-compatible Solr instance for development and test
83
+ environments, and automatically commit Solr index changes at the end of each
84
+ Rails request.
85
+
89
86
  email: mat@patch.com
90
87
  executables: []
91
88
 
@@ -99,7 +96,6 @@ files:
99
96
  - MIT-LICENSE
100
97
  - README.rdoc
101
98
  - Rakefile
102
- - TODO
103
99
  - VERSION.yml
104
100
  - dev_tasks/gemspec.rake
105
101
  - dev_tasks/rdoc.rake
@@ -129,10 +125,12 @@ files:
129
125
  - spec/mock_app/config/initializers/session_store.rb
130
126
  - spec/mock_app/config/routes.rb
131
127
  - spec/mock_app/config/sunspot.yml
128
+ - spec/mock_app/db/test.db
132
129
  - spec/model_lifecycle_spec.rb
133
130
  - spec/model_spec.rb
134
131
  - spec/request_lifecycle_spec.rb
135
132
  - spec/schema.rb
133
+ - spec/session_spec.rb
136
134
  - spec/spec_helper.rb
137
135
  has_rdoc: true
138
136
  homepage: http://github.com/outoftime/sunspot_rails
@@ -164,6 +162,7 @@ specification_version: 3
164
162
  summary: Rails integration for the Sunspot Solr search library
165
163
  test_files:
166
164
  - spec/spec_helper.rb
165
+ - spec/session_spec.rb
167
166
  - spec/configuration_spec.rb
168
167
  - spec/model_lifecycle_spec.rb
169
168
  - spec/schema.rb
data/TODO DELETED
@@ -1,4 +0,0 @@
1
- * Fix final status output for reindex
2
- * Add batch-per-request option
3
- * Optionally yield from reindex
4
- * Access to all searchable classes