sunspot_mongo 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c76e7526946c4e71396d8e9be616809e2cf0641c
4
- data.tar.gz: 8a95498eadd27dae4388aa7f9b29a96144e3df77
3
+ metadata.gz: 0b69f799044bedbdd34c2e51e95ea5b7de468da6
4
+ data.tar.gz: 4dde9885c91e575ace88a47e92b543046ea75b0c
5
5
  SHA512:
6
- metadata.gz: 6f1f22f005de41f9724c181d4806e96a4fee285a756c511c061f5ee9b90778ef2b3875eb08ae4182db364ac22916873352ad325bb8451e4025325fba2e6b45e9
7
- data.tar.gz: b15f31a49fc636d6d2cb61b05f94cf4f1ba15eb5b157431fc5ed59d1d8a077b45747102e4e814b8e22ba8b2bfb3bf1ee171f14a4368815083d40ade566f55f5b
6
+ metadata.gz: d81247aaf38e4dbe82cd1f7606b4365d8e290d165a1296c315234d04018d6b39073ec946fdddc0e81f4a4fb4f7a2dd30b6a584eb4665ebc70e3747e03a25817c
7
+ data.tar.gz: 95a1f3a371d16bcb577f407ef32a363c37ee6819c9d784db5ab970f1d3181eab06a94f7cc8f6c48781a41cdb443e10488565482cd8ad7d428dcfb771151934f1
data/.rubocop_todo.yml CHANGED
@@ -1,5 +1,6 @@
1
- # This configuration was generated by `rubocop --auto-gen-config`
2
- # on 2015-01-27 17:13:18 -0500 using RuboCop version 0.28.0.
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2015-08-28 12:21:38 -0400 using RuboCop version 0.33.0.
3
4
  # The point is for the user to remove these configuration records
4
5
  # one by one as the offenses are removed from the code base.
5
6
  # Note that changes in the inspected code, or installation of new
@@ -9,7 +10,7 @@
9
10
  Metrics/AbcSize:
10
11
  Max: 20
11
12
 
12
- # Offense count: 10
13
+ # Offense count: 9
13
14
  # Configuration parameters: AllowURI, URISchemes.
14
15
  Metrics/LineLength:
15
16
  Max: 124
@@ -19,10 +20,12 @@ Metrics/LineLength:
19
20
  Metrics/MethodLength:
20
21
  Max: 15
21
22
 
22
- # Offense count: 8
23
+ # Offense count: 10
23
24
  Style/Documentation:
24
- Enabled: false
25
-
26
- # Offense count: 2
27
- Style/RegexpLiteral:
28
- MaxSlashes: 0
25
+ Exclude:
26
+ - 'lib/sunspot/mongo.rb'
27
+ - 'lib/sunspot/mongo/railtie.rb'
28
+ - 'lib/sunspot/mongo/version.rb'
29
+ - 'spec/support/models/mongo_mapper.rb'
30
+ - 'spec/support/models/mongoid.rb'
31
+ - 'spec/support/rails.rb'
data/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ #### 1.2.0 (2015/08/28)
2
+
3
+ * [#9](https://github.com/derekharmel/sunspot_mongo/pull/9): Changed `DataAccessor` to fix support for eager loading of associations - [@cec](https://github.com/cec).
4
+ * [#9](https://github.com/derekharmel/sunspot_mongo/pull/9): Changed `rake sunspot:mongo:reindex` to support namespaced models - [@cec](https://github.com/cec).
5
+ * [#9](https://github.com/derekharmel/sunspot_mongo/pull/9): Renamed `rake sunspot:mongo:reindex` to `sunspot:reindex`, overriding Sunspot's original task - [@cec](https://github.com/cec).
6
+ * [#9](https://github.com/derekharmel/sunspot_mongo/pull/9): Added UPGRADING - [@cec](https://github.com/cec).
7
+
1
8
  #### 1.1.0 (2015/01/27)
2
9
 
3
10
  * Changed `DataAccessor#load_all` to use the `.find` method for MongoMapper and Mongoid for loading a group of documents - [@derekharmel](https://github.com/derekharmel).
data/README.md CHANGED
@@ -35,6 +35,10 @@ rails g sunspot_rails:install
35
35
  rake sunspot:solr:start
36
36
  ```
37
37
 
38
+ ## Upgrading
39
+
40
+ When upgrading to a new version, don't forget to check [UPGRADING](UPGRADING.md) for notes about breaking changes.
41
+
38
42
  ## Usage
39
43
 
40
44
  Add the following to your model (assuming you have a string field named "content"):
@@ -64,7 +68,7 @@ If you are using Rails, objects are automatically indexed to Solr as a part of t
64
68
  If you make a change to the object's "schema" (code in the searchable block), you must reindex all objects so the changes are reflected in Solr. Run:
65
69
 
66
70
  ```
67
- bundle exec rake sunspot:mongo:reindex
71
+ bundle exec rake sunspot:reindex
68
72
  ```
69
73
 
70
74
  ## More info
data/UPGRADING.md ADDED
@@ -0,0 +1,8 @@
1
+ Upgrading SunspotMongo
2
+ ======================
3
+
4
+ ### Upgrading to >= 1.2.0
5
+
6
+ The Rake task `sunspot:mongo:reindex` has been renamed to `sunspot:reindex` and now overrides the original Rake task from Sunspot.
7
+
8
+ See [#9](https://github.com/derekhamel/sunspot_mongo/pull/9) for more information.
data/lib/sunspot/mongo.rb CHANGED
@@ -18,12 +18,25 @@ module Sunspot
18
18
  end
19
19
 
20
20
  class DataAccessor < Sunspot::Adapters::DataAccessor
21
+ attr_accessor :include
22
+
23
+ # inspired by how Sunspot does this for ActiveRecord
24
+ def initialize(clazz)
25
+ super(clazz)
26
+ @inherited_attributes = [:include]
27
+ end
28
+
21
29
  def load(id)
22
- @clazz.find(id)
30
+ scope.find(id)
23
31
  end
24
32
 
25
33
  def load_all(ids)
26
- @clazz.find(ids)
34
+ scope.find(ids)
35
+ end
36
+
37
+ def scope
38
+ sc = @clazz.respond_to?(:criteria) ? @clazz.criteria : @clazz
39
+ @include ? sc.includes(@include) : sc
27
40
  end
28
41
  end
29
42
  end
@@ -1,20 +1,21 @@
1
+ # Delete reindex task registered by sunspot_rails
2
+ tasks = Rake.application.instance_variable_get '@tasks'
3
+ tasks.delete 'sunspot:reindex'
4
+
1
5
  namespace :sunspot do
2
- namespace :mongo do
3
- desc "Reindex all models that include Sunspot::Mongo and are located in your application's models directory."
4
- task :reindex, [:models] => :environment do |_t, args|
5
- sunspot_models = if args[:models]
6
- args[:models].split('+').map(&:constantize)
7
- else
8
- all_files = Dir.glob(Rails.root.join('app', 'models', '**', '*.rb'))
9
- all_models = all_files.map { |path| File.basename(path, '.rb').camelize.constantize }
10
- all_models.select { |m| m.include?(Sunspot::Mongo) && m.searchable? }
11
- end
6
+ desc "Reindex all models that include Sunspot::Mongo and are located in your application's models directory."
7
+ task :reindex, [:models] => :environment do |_t, args|
8
+ sunspot_models = if args[:models]
9
+ args[:models].split('+').map(&:constantize)
10
+ else
11
+ Rails.application.eager_load!
12
+ Sunspot.searchable # when a model calls searchable, it registers itself to Sunspot
13
+ end
12
14
 
13
- sunspot_models.each do |model|
14
- puts "reindexing #{model}"
15
- model.all.each(&:index)
16
- Sunspot.commit
17
- end
15
+ sunspot_models.each do |model|
16
+ puts "reindexing #{model}"
17
+ model.all.each(&:index)
18
+ Sunspot.commit
18
19
  end
19
20
  end
20
21
  end
@@ -1,5 +1,5 @@
1
1
  module Sunspot
2
2
  module Mongo
3
- VERSION = '1.1.0'
3
+ VERSION = '1.2.0'
4
4
  end
5
5
  end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'rails'
2
2
  require 'sunspot_mongo'
3
+ require 'support/rails'
3
4
 
4
5
  ENV['MONGOID_VERSION'] = '4' unless ENV['MONGOID_VERSION'] || ENV['MONGO_MAPPER_VERSION']
5
6
 
@@ -17,7 +18,7 @@ require 'shared_examples'
17
18
  def setup_servers_and_connections
18
19
  FileUtils.mkdir_p '/tmp/sunspot_mongo_test/'
19
20
 
20
- @solr_pid = fork { `sunspot-solr start --log-file=solr.log --data-directory=data --log-level=INFO --port=8900` }
21
+ @solr_pid = fork { `sunspot-solr start --log-file=solr.log --data-directory=data --log-level=INFO --port=8900` }
21
22
  sleep 5
22
23
 
23
24
  if ENV['MONGOID_VERSION']
@@ -19,6 +19,20 @@ describe 'Sunspot::Mongo' do
19
19
  if ENV['MONGOID_VERSION']
20
20
  describe MongoidTestDocument do
21
21
  it_behaves_like 'a mongo document'
22
+ it 'eager-loads associations specified through :include option' do
23
+ test_doc = MongoidTestDocument.create title: 'So much foo, so little bar.'
24
+ test_tag = MongoidTestDocumentTag.create name: 'A tag'
25
+ test_doc.tags << test_tag
26
+ test_doc.save
27
+ test_doc.index!
28
+
29
+ search = MongoidTestDocument.solr_search(include: :tags) do
30
+ fulltext 'foo'
31
+ end
32
+ expect(search.hits.length).to eql 1
33
+ expect(search.results.first).to eql test_doc
34
+ expect(search.results.first.tags).to match [test_tag]
35
+ end
22
36
  end
23
37
  describe 'test documents with options' do
24
38
  it 'should set sunspot_options' do
@@ -4,7 +4,18 @@ class MongoidTestDocument
4
4
 
5
5
  field :title
6
6
 
7
+ has_and_belongs_to_many :tags, class_name: 'MongoidTestDocumentTag'
8
+
7
9
  searchable do
8
10
  text :title
9
11
  end
10
12
  end
13
+
14
+ class MongoidTestDocumentTag
15
+ include Mongoid::Document
16
+ include Sunspot::Mongo
17
+
18
+ field :name
19
+
20
+ has_and_belongs_to_many :documents, class_name: 'MongoidTestDocument'
21
+ end
@@ -0,0 +1,5 @@
1
+ module Rails
2
+ def self.root
3
+ Dir.pwd
4
+ end
5
+ end
@@ -10,6 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.homepage = 'https://github.com/derekharmel/sunspot_mongo'
11
11
  s.summary = 'Sunspot support for Mongo Mapper and Mongoid.'
12
12
  s.description = 'Sunspot support for Mongo Mapper and Mongoid.'
13
+ s.license = 'MIT'
13
14
 
14
15
  s.rubyforge_project = 'sunspot_mongo'
15
16
 
@@ -25,5 +26,5 @@ Gem::Specification.new do |s|
25
26
  s.add_development_dependency 'guard'
26
27
  s.add_development_dependency 'guard-rspec'
27
28
  s.add_development_dependency 'sunspot_solr', '2.0.0'
28
- s.add_development_dependency 'rubocop', '0.28.0'
29
+ s.add_development_dependency 'rubocop', '0.33.0'
29
30
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sunspot_mongo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Alexander
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-01-27 00:00:00.000000000 Z
12
+ date: 2015-08-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sunspot_rails
@@ -101,14 +101,14 @@ dependencies:
101
101
  requirements:
102
102
  - - '='
103
103
  - !ruby/object:Gem::Version
104
- version: 0.28.0
104
+ version: 0.33.0
105
105
  type: :development
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
109
  - - '='
110
110
  - !ruby/object:Gem::Version
111
- version: 0.28.0
111
+ version: 0.33.0
112
112
  description: Sunspot support for Mongo Mapper and Mongoid.
113
113
  email:
114
114
  - balexand@gmail.com
@@ -129,6 +129,7 @@ files:
129
129
  - LICENSE
130
130
  - README.md
131
131
  - Rakefile
132
+ - UPGRADING.md
132
133
  - lib/sunspot/mongo.rb
133
134
  - lib/sunspot/mongo/railtie.rb
134
135
  - lib/sunspot/mongo/tasks.rb
@@ -139,9 +140,11 @@ files:
139
140
  - spec/sunspot_mongo_spec.rb
140
141
  - spec/support/models/mongo_mapper.rb
141
142
  - spec/support/models/mongoid.rb
143
+ - spec/support/rails.rb
142
144
  - sunspot_mongo.gemspec
143
145
  homepage: https://github.com/derekharmel/sunspot_mongo
144
- licenses: []
146
+ licenses:
147
+ - MIT
145
148
  metadata: {}
146
149
  post_install_message:
147
150
  rdoc_options: []
@@ -169,3 +172,4 @@ test_files:
169
172
  - spec/sunspot_mongo_spec.rb
170
173
  - spec/support/models/mongo_mapper.rb
171
174
  - spec/support/models/mongoid.rb
175
+ - spec/support/rails.rb