sunspot_rails 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
|