sunspot_rails 1.1.0 → 1.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.
- data/History.txt +11 -0
- data/README.rdoc +13 -11
- data/Rakefile +1 -10
- data/TESTING.md +35 -0
- data/dev_tasks/spec.rake +22 -0
- data/lib/generators/sunspot_rails/install/install_generator.rb +13 -0
- data/lib/generators/sunspot_rails/install/templates/config/sunspot.yml +17 -0
- data/lib/generators/sunspot_rails.rb +9 -0
- data/lib/sunspot/rails/adapters.rb +6 -6
- data/lib/sunspot/rails/configuration.rb +53 -6
- data/{rails → lib/sunspot/rails}/init.rb +0 -2
- data/lib/sunspot/rails/railtie.rb +26 -0
- data/lib/sunspot/rails/request_lifecycle.rb +7 -2
- data/lib/sunspot/rails/searchable.rb +11 -13
- data/lib/sunspot/rails/server.rb +1 -1
- data/lib/sunspot/rails/solr_logging.rb +6 -1
- data/lib/sunspot/rails/spec_helper.rb +8 -1
- data/lib/sunspot/rails/tasks.rb +1 -1
- data/lib/sunspot/rails/version.rb +1 -1
- data/lib/sunspot_rails.rb +7 -0
- data/spec/configuration_spec.rb +80 -9
- data/spec/model_spec.rb +19 -21
- data/spec/request_lifecycle_spec.rb +11 -2
- data/spec/server_spec.rb +2 -1
- data/spec/spec_helper.rb +18 -23
- metadata +45 -48
- data/dev_tasks/gemspec.rake +0 -33
- data/spec/mock_app/app/controllers/application.rb +0 -10
- data/spec/mock_app/app/controllers/application_controller.rb +0 -10
- data/spec/mock_app/app/controllers/posts_controller.rb +0 -6
- data/spec/mock_app/app/models/author.rb +0 -8
- data/spec/mock_app/app/models/blog.rb +0 -12
- data/spec/mock_app/app/models/location.rb +0 -2
- data/spec/mock_app/app/models/photo_post.rb +0 -2
- data/spec/mock_app/app/models/post.rb +0 -10
- data/spec/mock_app/app/models/post_with_auto.rb +0 -10
- data/spec/mock_app/config/boot.rb +0 -110
- data/spec/mock_app/config/database.yml +0 -4
- data/spec/mock_app/config/environment.rb +0 -42
- data/spec/mock_app/config/environments/development.rb +0 -27
- data/spec/mock_app/config/environments/test.rb +0 -27
- data/spec/mock_app/config/initializers/new_rails_defaults.rb +0 -19
- data/spec/mock_app/config/initializers/session_store.rb +0 -15
- data/spec/mock_app/config/routes.rb +0 -43
- data/spec/mock_app/config/sunspot.yml +0 -19
- data/spec/mock_app/db/schema.rb +0 -27
- data/spec/mock_app/db/test.db +0 -0
data/History.txt
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
== 1.2.0 2010-12-28
|
2
|
+
* Compatible with both Rails 2 and Rails 3
|
3
|
+
* Configure Sunspot with a SOLR_URL or WEBSOLR_URL environment variable, also
|
4
|
+
provide a default port based on Rails.env.
|
5
|
+
* Fix the 'Anonymous modules' ArgumentError for Ruby 1.9.2 and Rails 2.3
|
6
|
+
* Fix SQL's ambiguous ID issue when tables are joined
|
7
|
+
|
8
|
+
== 1.1.0 2010-04-01
|
9
|
+
* Added include option to searchable options to allow definition of eager
|
10
|
+
loading associations when indexing
|
11
|
+
|
1
12
|
== 1.0.4 2010-03-19
|
2
13
|
* Fix StubSessionProxy to match new internal API
|
3
14
|
|
data/README.rdoc
CHANGED
@@ -14,25 +14,25 @@ provides the following features:
|
|
14
14
|
* Provide rake tasks for starting and stopping the development Solr instance,
|
15
15
|
using the configuration in sunspot.yml
|
16
16
|
|
17
|
-
Sunspot::Rails has been tested with Rails versions 2.
|
17
|
+
Sunspot::Rails has been tested with Rails versions 2.3 and 3.0
|
18
18
|
|
19
|
-
== Installation
|
19
|
+
== Installation in Rails 3
|
20
20
|
|
21
|
-
|
21
|
+
In your <code>Gemfile</code>:
|
22
22
|
|
23
|
-
|
24
|
-
|
23
|
+
gem 'sunspot_rails'
|
24
|
+
|
25
|
+
== Installation in Rails 2
|
26
|
+
|
27
|
+
In your project's <code>config/environment.rb</code>, add the following gem dependencies:
|
28
|
+
|
29
|
+
config.gem 'sunspot'
|
30
|
+
config.gem 'sunspot_rails'
|
25
31
|
|
26
32
|
Install the gems with:
|
27
33
|
|
28
34
|
rake gems:install
|
29
35
|
|
30
|
-
If you are using an older version of Rails that doesn't support plugins-as-gems, install the gems manually and install the plugin:
|
31
|
-
|
32
|
-
sudo gem install sunspot sunspot_rails --source=http://gems.github.com
|
33
|
-
|
34
|
-
script/plugin install git://github.com/outoftime/sunspot_rails.git
|
35
|
-
|
36
36
|
Generate the file <code>config/sunspot.yml</code>:
|
37
37
|
|
38
38
|
script/generate sunspot
|
@@ -43,6 +43,8 @@ Sunspot::Rails as a gem, add the following line to your project's Rakefile:
|
|
43
43
|
|
44
44
|
require 'sunspot/rails/tasks'
|
45
45
|
|
46
|
+
== Using Sunspot::Rails
|
47
|
+
|
46
48
|
If you wish to make modifications to the Solr schema, you can create a custom
|
47
49
|
Solr home in your project directory. In order to do so, create the directory
|
48
50
|
<code>RAILS_ROOT/solr/conf</code>, and copy in the contents of the Solr gem's
|
data/Rakefile
CHANGED
@@ -1,25 +1,16 @@
|
|
1
1
|
require 'rake'
|
2
|
-
require 'spec/rake/spectask'
|
3
2
|
require 'rake/rdoctask'
|
4
3
|
|
5
|
-
task :default => :spec
|
6
|
-
|
7
4
|
if File.exist?(sunspot_lib = File.expand_path(File.join(File.dirname(__FILE__), '..', 'sunspot', 'lib')))
|
8
5
|
STDERR.puts("Using sunspot lib at #{sunspot_lib}")
|
9
6
|
$: << sunspot_lib
|
10
7
|
end
|
11
8
|
|
12
|
-
desc 'Run all specs'
|
13
|
-
Spec::Rake::SpecTask.new(:spec) do |t|
|
14
|
-
t.spec_files = FileList['spec/*_spec.rb']
|
15
|
-
t.spec_opts << '--color'
|
16
|
-
end
|
17
|
-
|
18
9
|
task :environment do
|
19
10
|
if ENV['SUNSPOT_LIB']
|
20
11
|
$: << ENV['SUNSPOT_LIB']
|
21
12
|
end
|
22
|
-
ENV['RAILS_ROOT'] ||= File.join(File.dirname(__FILE__), 'spec', '
|
13
|
+
ENV['RAILS_ROOT'] ||= File.join(File.dirname(__FILE__), 'spec', 'rails3')
|
23
14
|
ENV['RAILS_ENV'] ||= 'test'
|
24
15
|
require File.expand_path(File.join(ENV['RAILS_ROOT'], 'config', 'environment.rb'))
|
25
16
|
end
|
data/TESTING.md
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# Testing `sunspot_rails`
|
2
|
+
|
3
|
+
Note: All the paths mentioned in here are relative to the current directory, or `sunspot/sunspot_rails`.
|
4
|
+
|
5
|
+
The `sunspot_rails` gem is tested with RSpec, and its spec suite is located in `spec`.
|
6
|
+
|
7
|
+
These specs are to be run against up to date Rails 2 and Rails 3 applications, included at `spec/rails2` and `spec/rails3`, respectively. The `spec_helper.rb` file loads the environment for these applications based on the `RAILS_ROOT` provided when invoking tests, outlined below.
|
8
|
+
|
9
|
+
## Start Solr
|
10
|
+
|
11
|
+
Specs expect to connect to Solr on `http://localhost:8980/solr`
|
12
|
+
|
13
|
+
rake sunspot:solr:start
|
14
|
+
|
15
|
+
## Install dependencies
|
16
|
+
|
17
|
+
Each application uses Bundler to manage its dependencies. The `Gemfile` also installs the `sunspot` and `sunspot_rails` gems from your copies checked out locally. Because Bundler expands the full path to `sunspot` and `sunspot_rails`, we're excluding its generated `Gemfile.lock` file from version control.
|
18
|
+
|
19
|
+
pushd spec/rails2
|
20
|
+
bundle install
|
21
|
+
cd ../rails3
|
22
|
+
bundle install
|
23
|
+
popd
|
24
|
+
|
25
|
+
## Invoke specs
|
26
|
+
|
27
|
+
The project contains wrapper scripts that set up the environment to run the
|
28
|
+
specs under Rails 2 and Rails 3 respectively:
|
29
|
+
|
30
|
+
rake spec:rails2
|
31
|
+
rake spec:rails3
|
32
|
+
|
33
|
+
Or you can run them both:
|
34
|
+
|
35
|
+
rake spec
|
data/dev_tasks/spec.rake
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
desc 'Run spec suite in both Rails 2 and Rails 3'
|
2
|
+
task :spec => [:"spec:rails2", :"spec:rails3"]
|
3
|
+
|
4
|
+
namespace :spec do
|
5
|
+
desc 'Run spec suite in Rails 2 application'
|
6
|
+
task :rails2 do
|
7
|
+
ENV['BUNDLE_GEMFILE'] = 'spec/rails2/Gemfile'
|
8
|
+
ENV['RAILS_ROOT'] = 'spec/rails2'
|
9
|
+
require 'bundler'
|
10
|
+
Bundler.setup(:default, :test)
|
11
|
+
system "spec --color #{ENV['SPEC'] || 'spec'}"
|
12
|
+
end
|
13
|
+
|
14
|
+
desc 'Run spec suite in Rails 3 application'
|
15
|
+
task :rails3 do
|
16
|
+
ENV['BUNDLE_GEMFILE'] = 'spec/rails3/Gemfile'
|
17
|
+
ENV['RAILS_ROOT'] = 'spec/rails3'
|
18
|
+
require 'bundler'
|
19
|
+
Bundler.setup(:default, :test)
|
20
|
+
system "rspec --color #{ENV['SPEC'] || 'spec'}"
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module SunspotRails
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
4
|
+
def self.source_root
|
5
|
+
@source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
|
6
|
+
end
|
7
|
+
def copy_config_file
|
8
|
+
template 'config/sunspot.yml'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
@@ -48,7 +48,7 @@ module Sunspot #:nodoc:
|
|
48
48
|
#
|
49
49
|
def load(id)
|
50
50
|
@clazz.first(options_for_find.merge(
|
51
|
-
:conditions => { @clazz.primary_key => id
|
51
|
+
:conditions => { @clazz.primary_key => id}
|
52
52
|
))
|
53
53
|
end
|
54
54
|
|
@@ -65,17 +65,17 @@ module Sunspot #:nodoc:
|
|
65
65
|
#
|
66
66
|
def load_all(ids)
|
67
67
|
@clazz.all(options_for_find.merge(
|
68
|
-
:conditions => { @clazz.primary_key => ids.map { |id| id
|
68
|
+
:conditions => { @clazz.primary_key => ids.map { |id| id }}
|
69
69
|
))
|
70
70
|
end
|
71
71
|
|
72
72
|
private
|
73
73
|
|
74
74
|
def options_for_find
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
75
|
+
options = {}
|
76
|
+
options[:include] = @include unless @include.blank?
|
77
|
+
options[:select] = @select unless @select.blank?
|
78
|
+
options
|
79
79
|
end
|
80
80
|
end
|
81
81
|
end
|
@@ -48,18 +48,30 @@ module Sunspot #:nodoc:
|
|
48
48
|
# String:: host name
|
49
49
|
#
|
50
50
|
def hostname
|
51
|
-
|
51
|
+
unless defined?(@hostname)
|
52
|
+
@hostname = solr_url.host if solr_url
|
53
|
+
@hostname ||= user_configuration_from_key('solr', 'hostname')
|
54
|
+
@hostname ||= default_hostname
|
55
|
+
end
|
56
|
+
@hostname
|
52
57
|
end
|
53
|
-
|
58
|
+
|
54
59
|
#
|
55
|
-
# The port at which to connect to Solr.
|
60
|
+
# The port at which to connect to Solr.
|
61
|
+
# Defaults to 8981 in test, 8982 in development and 8983 in production.
|
56
62
|
#
|
57
63
|
# ==== Returns
|
58
64
|
#
|
59
65
|
# Integer:: port
|
60
66
|
#
|
61
67
|
def port
|
62
|
-
|
68
|
+
unless defined?(@port)
|
69
|
+
@port = solr_url.port if solr_url
|
70
|
+
@port ||= user_configuration_from_key('solr', 'port')
|
71
|
+
@port ||= default_port
|
72
|
+
@port = @port.to_i
|
73
|
+
end
|
74
|
+
@port
|
63
75
|
end
|
64
76
|
|
65
77
|
#
|
@@ -71,7 +83,12 @@ module Sunspot #:nodoc:
|
|
71
83
|
# String:: path
|
72
84
|
#
|
73
85
|
def path
|
74
|
-
|
86
|
+
unless defined?(@path)
|
87
|
+
@path = solr_url.path if solr_url
|
88
|
+
@path ||= user_configuration_from_key('solr', 'path')
|
89
|
+
@path ||= default_path
|
90
|
+
end
|
91
|
+
@path
|
75
92
|
end
|
76
93
|
|
77
94
|
#
|
@@ -245,7 +262,7 @@ module Sunspot #:nodoc:
|
|
245
262
|
hash[key] if hash
|
246
263
|
end
|
247
264
|
end
|
248
|
-
|
265
|
+
|
249
266
|
#
|
250
267
|
# Memoized hash of configuration options for the current Rails environment
|
251
268
|
# as specified in config/sunspot.yml
|
@@ -267,6 +284,36 @@ module Sunspot #:nodoc:
|
|
267
284
|
end
|
268
285
|
end
|
269
286
|
end
|
287
|
+
|
288
|
+
protected
|
289
|
+
|
290
|
+
#
|
291
|
+
# When a specific hostname, port and path aren't provided in the
|
292
|
+
# sunspot.yml file, look for a key named 'url', then check the
|
293
|
+
# environment, then fall back to a sensible localhost default.
|
294
|
+
#
|
295
|
+
|
296
|
+
def solr_url
|
297
|
+
if ENV['SOLR_URL'] || ENV['WEBSOLR_URL']
|
298
|
+
URI.parse(ENV['SOLR_URL'] || ENV['WEBSOLR_URL'])
|
299
|
+
end
|
300
|
+
end
|
301
|
+
|
302
|
+
def default_hostname
|
303
|
+
'localhost'
|
304
|
+
end
|
305
|
+
|
306
|
+
def default_port
|
307
|
+
{ 'test' => 8981,
|
308
|
+
'development' => 8982,
|
309
|
+
'production' => 8983
|
310
|
+
}[::Rails.env] || 8983
|
311
|
+
end
|
312
|
+
|
313
|
+
def default_path
|
314
|
+
'/solr'
|
315
|
+
end
|
316
|
+
|
270
317
|
end
|
271
318
|
end
|
272
319
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'sunspot'
|
2
|
-
|
3
1
|
Sunspot.session = Sunspot::Rails.build_session
|
4
2
|
Sunspot::Adapters::InstanceAdapter.register(Sunspot::Rails::Adapters::ActiveRecordInstanceAdapter, ActiveRecord::Base)
|
5
3
|
Sunspot::Adapters::DataAccessor.register(Sunspot::Rails::Adapters::ActiveRecordDataAccessor, ActiveRecord::Base)
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Sunspot
|
2
|
+
module Rails
|
3
|
+
class Railtie < ::Rails::Railtie
|
4
|
+
initializer 'sunspot_rails.init' do
|
5
|
+
Sunspot.session = Sunspot::Rails.build_session
|
6
|
+
ActiveSupport.on_load(:active_record) do
|
7
|
+
Sunspot::Adapters::InstanceAdapter.register(Sunspot::Rails::Adapters::ActiveRecordInstanceAdapter, ActiveRecord::Base)
|
8
|
+
Sunspot::Adapters::DataAccessor.register(Sunspot::Rails::Adapters::ActiveRecordDataAccessor, ActiveRecord::Base)
|
9
|
+
include(Sunspot::Rails::Searchable)
|
10
|
+
end
|
11
|
+
ActiveSupport.on_load(:action_controller) do
|
12
|
+
include(Sunspot::Rails::RequestLifecycle)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
rake_tasks do
|
17
|
+
load 'sunspot/rails/tasks.rb'
|
18
|
+
end
|
19
|
+
|
20
|
+
generators do
|
21
|
+
load "generators/sunspot_rails.rb"
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -8,8 +8,13 @@ module Sunspot #:nodoc:
|
|
8
8
|
module RequestLifecycle
|
9
9
|
class <<self
|
10
10
|
def included(base) #:nodoc:
|
11
|
-
|
12
|
-
|
11
|
+
subclasses = base.subclasses.map do |subclass|
|
12
|
+
begin
|
13
|
+
subclass.constantize
|
14
|
+
rescue NameError
|
15
|
+
end
|
16
|
+
end.compact
|
17
|
+
loaded_controllers = [base].concat(subclasses)
|
13
18
|
# Depending on how Sunspot::Rails is loaded, there may already be
|
14
19
|
# controllers loaded into memory that subclass this controller. In
|
15
20
|
# this case, since after_filter uses the inheritable_attribute
|
@@ -223,25 +223,23 @@ module Sunspot #:nodoc:
|
|
223
223
|
# Post.index(:include => :author)
|
224
224
|
#
|
225
225
|
def solr_index(opts={})
|
226
|
-
options = {
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
226
|
+
options = {
|
227
|
+
:batch_size => 500,
|
228
|
+
:batch_commit => true,
|
229
|
+
:include => self.sunspot_options[:include],
|
230
|
+
:first_id => 0
|
231
|
+
}.merge(opts)
|
232
|
+
|
233
|
+
if options[:batch_size]
|
234
|
+
find_in_batches(:include => options[:include], :batch_size => options[:batch_size]) do |records|
|
235
235
|
solr_benchmark options[:batch_size], counter do
|
236
|
-
records = all(:include => options[:include], :conditions => ["#{table_name}.#{primary_key} > ?", last_id], :limit => options[:batch_size], :order => primary_key)
|
237
236
|
Sunspot.index(records)
|
238
|
-
last_id = records.last.id
|
239
237
|
end
|
240
238
|
Sunspot.commit if options[:batch_commit]
|
241
|
-
offset += options[:batch_size]
|
242
|
-
counter += 1
|
243
239
|
end
|
244
240
|
Sunspot.commit unless options[:batch_commit]
|
241
|
+
else
|
242
|
+
Sunspot.index!(all(:include => options[:include]))
|
245
243
|
end
|
246
244
|
end
|
247
245
|
|
data/lib/sunspot/rails/server.rb
CHANGED
@@ -38,7 +38,12 @@ module Sunspot
|
|
38
38
|
private
|
39
39
|
|
40
40
|
def format_log_entry(message, dump = nil)
|
41
|
-
|
41
|
+
@colorize_logging ||= begin
|
42
|
+
::Rails.application.config.colorize_logging # Rails 3
|
43
|
+
rescue NoMethodError
|
44
|
+
ActiveRecord::Base.colorize_logging # Rails 2
|
45
|
+
end
|
46
|
+
if @colorize_logging
|
42
47
|
message_color, dump_color = "4;32;1", "0;1"
|
43
48
|
log_entry = " \e[#{message_color}m#{message}\e[0m "
|
44
49
|
log_entry << "\e[#{dump_color}m%#{String === dump ? 's' : 'p'}\e[0m" % dump if dump
|
data/lib/sunspot/rails/tasks.rb
CHANGED
@@ -47,7 +47,7 @@ namespace :sunspot do
|
|
47
47
|
reindex_options[:batch_size] = args[:batch_size].to_i if args[:batch_size].to_i > 0
|
48
48
|
end
|
49
49
|
unless args[:models]
|
50
|
-
all_files = Dir.glob(
|
50
|
+
all_files = Dir.glob(Rails.root.join('app', 'models', '*.rb'))
|
51
51
|
all_models = all_files.map { |path| File.basename(path, '.rb').camelize.constantize }
|
52
52
|
sunspot_models = all_models.select { |m| m < ActiveRecord::Base and m.searchable? }
|
53
53
|
else
|
data/spec/configuration_spec.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/spec_helper'
|
2
2
|
|
3
|
-
describe Sunspot::Rails::Configuration, "default values" do
|
3
|
+
describe Sunspot::Rails::Configuration, "default values without a sunspot.yml" do
|
4
4
|
before(:each) do
|
5
|
-
File.
|
5
|
+
File.stub!(:exist?).and_return(false) # simulate sunspot.yml not existing
|
6
6
|
@config = Sunspot::Rails::Configuration.new
|
7
7
|
end
|
8
8
|
|
@@ -14,8 +14,27 @@ describe Sunspot::Rails::Configuration, "default values" do
|
|
14
14
|
@config.path.should == '/solr'
|
15
15
|
end
|
16
16
|
|
17
|
-
|
18
|
-
|
17
|
+
describe "port" do
|
18
|
+
it "should default to port 8981 in test" do
|
19
|
+
::Rails.stub!(:env => 'test')
|
20
|
+
@config = Sunspot::Rails::Configuration.new
|
21
|
+
@config.port.should == 8981
|
22
|
+
end
|
23
|
+
it "should default to port 8982 in development" do
|
24
|
+
::Rails.stub!(:env => 'development')
|
25
|
+
@config = Sunspot::Rails::Configuration.new
|
26
|
+
@config.port.should == 8982
|
27
|
+
end
|
28
|
+
it "should default to 8983 in production" do
|
29
|
+
::Rails.stub!(:env => 'production')
|
30
|
+
@config = Sunspot::Rails::Configuration.new
|
31
|
+
@config.port.should == 8983
|
32
|
+
end
|
33
|
+
it "should generally default to 8983" do
|
34
|
+
::Rails.stub!(:env => 'staging')
|
35
|
+
@config = Sunspot::Rails::Configuration.new
|
36
|
+
@config.port.should == 8983
|
37
|
+
end
|
19
38
|
end
|
20
39
|
|
21
40
|
it "should handle the 'log_level' property when not set" do
|
@@ -41,10 +60,6 @@ describe Sunspot::Rails::Configuration, "default values" do
|
|
41
60
|
@config.pid_path.should == '/some/path/solr/pids/test'
|
42
61
|
end
|
43
62
|
|
44
|
-
it "should handle the 'solr_home' property when not set" do
|
45
|
-
@config.solr_home.should_not == nil
|
46
|
-
end
|
47
|
-
|
48
63
|
it "should handle the 'auto_commit_after_request' propery when not set" do
|
49
64
|
@config.auto_commit_after_request?.should == true
|
50
65
|
end
|
@@ -54,7 +69,7 @@ describe Sunspot::Rails::Configuration, "default values" do
|
|
54
69
|
end
|
55
70
|
end
|
56
71
|
|
57
|
-
describe Sunspot::Rails::Configuration, "user
|
72
|
+
describe Sunspot::Rails::Configuration, "user provided sunspot.yml" do
|
58
73
|
before(:each) do
|
59
74
|
::Rails.stub!(:env => 'config_test')
|
60
75
|
@config = Sunspot::Rails::Configuration.new
|
@@ -100,3 +115,59 @@ describe Sunspot::Rails::Configuration, "user settings" do
|
|
100
115
|
@config.auto_commit_after_delete_request?.should == true
|
101
116
|
end
|
102
117
|
end
|
118
|
+
|
119
|
+
|
120
|
+
describe Sunspot::Rails::Configuration, "with ENV['SOLR_URL'] overriding sunspot.yml" do
|
121
|
+
before(:all) do
|
122
|
+
ENV['SOLR_URL'] = 'http://environment.host:5432/solr/env'
|
123
|
+
end
|
124
|
+
|
125
|
+
before(:each) do
|
126
|
+
::Rails.stub!(:env => 'config_test')
|
127
|
+
@config = Sunspot::Rails::Configuration.new
|
128
|
+
end
|
129
|
+
|
130
|
+
after(:all) do
|
131
|
+
ENV.delete('SOLR_URL')
|
132
|
+
end
|
133
|
+
|
134
|
+
it "should handle the 'hostname' property when set" do
|
135
|
+
@config.hostname.should == 'environment.host'
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should handle the 'port' property when set" do
|
139
|
+
@config.port.should == 5432
|
140
|
+
end
|
141
|
+
|
142
|
+
it "should handle the 'path' property when set" do
|
143
|
+
@config.path.should == '/solr/env'
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
describe Sunspot::Rails::Configuration, "with ENV['WEBSOLR_URL'] overriding sunspot.yml" do
|
148
|
+
before(:all) do
|
149
|
+
ENV['WEBSOLR_URL'] = 'http://index.websolr.test/solr/a1b2c3d4e5f'
|
150
|
+
end
|
151
|
+
|
152
|
+
before(:each) do
|
153
|
+
::Rails.stub!(:env => 'config_test')
|
154
|
+
@config = Sunspot::Rails::Configuration.new
|
155
|
+
end
|
156
|
+
|
157
|
+
after(:all) do
|
158
|
+
ENV.delete('WEBSOLR_URL')
|
159
|
+
end
|
160
|
+
|
161
|
+
it "should handle the 'hostname' property when set" do
|
162
|
+
@config.hostname.should == 'index.websolr.test'
|
163
|
+
end
|
164
|
+
|
165
|
+
it "should handle the 'port' property when set" do
|
166
|
+
@config.port.should == 80
|
167
|
+
end
|
168
|
+
|
169
|
+
it "should handle the 'path' property when set" do
|
170
|
+
@config.path.should == '/solr/a1b2c3d4e5f'
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|