mongoid_search 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/.gitignore +1 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +51 -0
- data/Rakefile +1 -18
- data/VERSION +1 -1
- data/mongoid_search.gemspec +14 -3
- data/spec/keywords_extractor_spec.rb +28 -0
- data/spec/models/product.rb +10 -0
- data/spec/models/tag.rb +6 -0
- data/spec/mongoid_search_spec.rb +36 -3
- data/spec/spec_helper.rb +22 -3
- metadata +29 -5
data/.gitignore
CHANGED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
activemodel (3.0.0)
|
5
|
+
activesupport (= 3.0.0)
|
6
|
+
builder (~> 2.1.2)
|
7
|
+
i18n (~> 0.4.1)
|
8
|
+
activesupport (3.0.0)
|
9
|
+
bson (1.0.4)
|
10
|
+
builder (2.1.2)
|
11
|
+
database_cleaner (0.5.2)
|
12
|
+
diff-lcs (1.1.2)
|
13
|
+
gemcutter (0.6.1)
|
14
|
+
git (1.2.5)
|
15
|
+
i18n (0.4.1)
|
16
|
+
jeweler (1.4.0)
|
17
|
+
gemcutter (>= 0.1.0)
|
18
|
+
git (>= 1.2.5)
|
19
|
+
rubyforge (>= 2.0.0)
|
20
|
+
json_pure (1.4.6)
|
21
|
+
mongo (1.0.7)
|
22
|
+
bson (>= 1.0.4)
|
23
|
+
mongoid (2.0.0.beta.18)
|
24
|
+
activemodel (~> 3.0.0)
|
25
|
+
bson (= 1.0.4)
|
26
|
+
mongo (= 1.0.7)
|
27
|
+
tzinfo (~> 0.3.22)
|
28
|
+
will_paginate (~> 3.0.pre)
|
29
|
+
rspec (2.0.0.beta.22)
|
30
|
+
rspec-core (= 2.0.0.beta.22)
|
31
|
+
rspec-expectations (= 2.0.0.beta.22)
|
32
|
+
rspec-mocks (= 2.0.0.beta.22)
|
33
|
+
rspec-core (2.0.0.beta.22)
|
34
|
+
rspec-expectations (2.0.0.beta.22)
|
35
|
+
diff-lcs (>= 1.1.2)
|
36
|
+
rspec-mocks (2.0.0.beta.22)
|
37
|
+
rspec-core (= 2.0.0.beta.22)
|
38
|
+
rspec-expectations (= 2.0.0.beta.22)
|
39
|
+
rubyforge (2.0.4)
|
40
|
+
json_pure (>= 1.1.7)
|
41
|
+
tzinfo (0.3.23)
|
42
|
+
will_paginate (3.0.pre2)
|
43
|
+
|
44
|
+
PLATFORMS
|
45
|
+
ruby
|
46
|
+
|
47
|
+
DEPENDENCIES
|
48
|
+
database_cleaner
|
49
|
+
jeweler
|
50
|
+
mongoid (= 2.0.0.beta.18)
|
51
|
+
rspec (= 2.0.0.beta.22)
|
data/Rakefile
CHANGED
@@ -10,6 +10,7 @@ begin
|
|
10
10
|
gem.email = "mauricio@papodenerd.net"
|
11
11
|
gem.homepage = "http://github.com/mauriciozaffari/mongoid_search"
|
12
12
|
gem.authors = ["Mauricio Zaffari"]
|
13
|
+
gem.add_dependency("mongoid", ["~> 2.0.0.beta"])
|
13
14
|
gem.add_development_dependency "rspec", ">= 1.2.9"
|
14
15
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
15
16
|
end
|
@@ -24,22 +25,4 @@ Spec::Rake::SpecTask.new(:spec) do |spec|
|
|
24
25
|
spec.spec_files = FileList['spec/**/*_spec.rb']
|
25
26
|
end
|
26
27
|
|
27
|
-
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
28
|
-
spec.libs << 'lib' << 'spec'
|
29
|
-
spec.pattern = 'spec/**/*_spec.rb'
|
30
|
-
spec.rcov = true
|
31
|
-
end
|
32
|
-
|
33
|
-
task :spec => :check_dependencies
|
34
|
-
|
35
28
|
task :default => :spec
|
36
|
-
|
37
|
-
require 'rake/rdoctask'
|
38
|
-
Rake::RDocTask.new do |rdoc|
|
39
|
-
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
40
|
-
|
41
|
-
rdoc.rdoc_dir = 'rdoc'
|
42
|
-
rdoc.title = "mongoid_search #{version}"
|
43
|
-
rdoc.rdoc_files.include('README*')
|
44
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
45
|
-
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
data/mongoid_search.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{mongoid_search}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Mauricio Zaffari"]
|
12
|
-
s.date = %q{2010-09-
|
12
|
+
s.date = %q{2010-09-17}
|
13
13
|
s.description = %q{Simple full text search implementation.}
|
14
14
|
s.email = %q{mauricio@papodenerd.net}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -19,6 +19,8 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.files = [
|
20
20
|
".document",
|
21
21
|
".gitignore",
|
22
|
+
"Gemfile",
|
23
|
+
"Gemfile.lock",
|
22
24
|
"LICENSE",
|
23
25
|
"README.md",
|
24
26
|
"Rakefile",
|
@@ -27,6 +29,9 @@ Gem::Specification.new do |s|
|
|
27
29
|
"lib/mongoid_search/keywords_extractor.rb",
|
28
30
|
"lib/mongoid_search/mongoid_search.rb",
|
29
31
|
"mongoid_search.gemspec",
|
32
|
+
"spec/keywords_extractor_spec.rb",
|
33
|
+
"spec/models/product.rb",
|
34
|
+
"spec/models/tag.rb",
|
30
35
|
"spec/mongoid_search_spec.rb",
|
31
36
|
"spec/spec.opts",
|
32
37
|
"spec/spec_helper.rb"
|
@@ -37,7 +42,10 @@ Gem::Specification.new do |s|
|
|
37
42
|
s.rubygems_version = %q{1.3.7}
|
38
43
|
s.summary = %q{Search implementation for Mongoid ORM}
|
39
44
|
s.test_files = [
|
40
|
-
"spec/
|
45
|
+
"spec/keywords_extractor_spec.rb",
|
46
|
+
"spec/models/product.rb",
|
47
|
+
"spec/models/tag.rb",
|
48
|
+
"spec/mongoid_search_spec.rb",
|
41
49
|
"spec/spec_helper.rb"
|
42
50
|
]
|
43
51
|
|
@@ -46,11 +54,14 @@ Gem::Specification.new do |s|
|
|
46
54
|
s.specification_version = 3
|
47
55
|
|
48
56
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
57
|
+
s.add_runtime_dependency(%q<mongoid>, ["~> 2.0.0.beta"])
|
49
58
|
s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
|
50
59
|
else
|
60
|
+
s.add_dependency(%q<mongoid>, ["~> 2.0.0.beta"])
|
51
61
|
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
52
62
|
end
|
53
63
|
else
|
64
|
+
s.add_dependency(%q<mongoid>, ["~> 2.0.0.beta"])
|
54
65
|
s.add_dependency(%q<rspec>, [">= 1.2.9"])
|
55
66
|
end
|
56
67
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
3
|
+
|
4
|
+
describe KeywordsExtractor do
|
5
|
+
it "should return if no text is passed" do
|
6
|
+
KeywordsExtractor.extract("").should == nil
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should return an array of keywords" do
|
10
|
+
KeywordsExtractor.extract("keyword").class.should == Array
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should return an array of strings" do
|
14
|
+
KeywordsExtractor.extract("keyword").first.class.should == String
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should remove accents from the text passed" do
|
18
|
+
KeywordsExtractor.extract("café").should == ["cafe"]
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should downcase the text passed" do
|
22
|
+
KeywordsExtractor.extract("CaFé").should == ["cafe"]
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should split whitespaces, hifens, dots and underlines" do
|
26
|
+
KeywordsExtractor.extract("CaFé-express.com delicious").should == ["cafe", "express", "com", "delicious"]
|
27
|
+
end
|
28
|
+
end
|
data/spec/models/tag.rb
ADDED
data/spec/mongoid_search_spec.rb
CHANGED
@@ -1,7 +1,40 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
4
|
|
3
|
-
describe
|
4
|
-
|
5
|
-
|
5
|
+
describe Mongoid::Search do
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
@product = Product.create :brand => "Apple", :name => "iPhone", :tags => ["Amazing", "Awesome", "Olé"].map { |tag| Tag.new(:name => tag) }
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should set the _keywords field" do
|
12
|
+
@product._keywords.should == ["apple", "iphone", "amazing", "awesome", "ole"]
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should return results in search" do
|
16
|
+
Product.search("apple").size.should == 1
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should return results in search even searching a accented word" do
|
20
|
+
Product.search("Ole").size.should == 1
|
21
|
+
Product.search("Olé").size.should == 1
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should return results in search even if the case doesn't match" do
|
25
|
+
Product.search("oLe").size.should == 1
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should return results in search with a partial word" do
|
29
|
+
Product.search("iph").size.should == 1
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should return results for any matching word with default search" do
|
33
|
+
Product.search("apple motorola").size.should == 1
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should not return results when all words do not match, if using :match => :all" do
|
37
|
+
Product.match = :all
|
38
|
+
Product.search("apple motorola").size.should == 0
|
6
39
|
end
|
7
40
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,9 +1,28 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
2
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
3
|
+
require 'mongoid'
|
4
|
+
require 'database_cleaner'
|
3
5
|
require 'mongoid_search'
|
4
|
-
|
5
|
-
|
6
|
+
|
7
|
+
Mongoid.configure do |config|
|
8
|
+
name = "mongoid_search_test"
|
9
|
+
config.master = Mongo::Connection.new.db(name)
|
10
|
+
end
|
11
|
+
|
12
|
+
Dir["#{File.dirname(__FILE__)}/models/*.rb"].each { |file| require file }
|
13
|
+
|
14
|
+
DatabaseCleaner.orm = "mongoid"
|
6
15
|
|
7
16
|
Spec::Runner.configure do |config|
|
8
|
-
|
17
|
+
config.before(:all) do
|
18
|
+
DatabaseCleaner.strategy = :truncation
|
19
|
+
end
|
20
|
+
|
21
|
+
config.before(:each) do
|
22
|
+
DatabaseCleaner.start
|
23
|
+
end
|
24
|
+
|
25
|
+
config.after(:each) do
|
26
|
+
DatabaseCleaner.clean
|
27
|
+
end
|
9
28
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 1
|
9
|
+
version: 0.1.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Mauricio Zaffari
|
@@ -14,13 +14,29 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-09-
|
17
|
+
date: 2010-09-17 00:00:00 -03:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
|
-
name:
|
21
|
+
name: mongoid
|
22
22
|
prerelease: false
|
23
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ~>
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 2
|
30
|
+
- 0
|
31
|
+
- 0
|
32
|
+
- beta
|
33
|
+
version: 2.0.0.beta
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rspec
|
38
|
+
prerelease: false
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
24
40
|
none: false
|
25
41
|
requirements:
|
26
42
|
- - ">="
|
@@ -31,7 +47,7 @@ dependencies:
|
|
31
47
|
- 9
|
32
48
|
version: 1.2.9
|
33
49
|
type: :development
|
34
|
-
version_requirements: *
|
50
|
+
version_requirements: *id002
|
35
51
|
description: Simple full text search implementation.
|
36
52
|
email: mauricio@papodenerd.net
|
37
53
|
executables: []
|
@@ -44,6 +60,8 @@ extra_rdoc_files:
|
|
44
60
|
files:
|
45
61
|
- .document
|
46
62
|
- .gitignore
|
63
|
+
- Gemfile
|
64
|
+
- Gemfile.lock
|
47
65
|
- LICENSE
|
48
66
|
- README.md
|
49
67
|
- Rakefile
|
@@ -52,6 +70,9 @@ files:
|
|
52
70
|
- lib/mongoid_search/keywords_extractor.rb
|
53
71
|
- lib/mongoid_search/mongoid_search.rb
|
54
72
|
- mongoid_search.gemspec
|
73
|
+
- spec/keywords_extractor_spec.rb
|
74
|
+
- spec/models/product.rb
|
75
|
+
- spec/models/tag.rb
|
55
76
|
- spec/mongoid_search_spec.rb
|
56
77
|
- spec/spec.opts
|
57
78
|
- spec/spec_helper.rb
|
@@ -88,5 +109,8 @@ signing_key:
|
|
88
109
|
specification_version: 3
|
89
110
|
summary: Search implementation for Mongoid ORM
|
90
111
|
test_files:
|
112
|
+
- spec/keywords_extractor_spec.rb
|
113
|
+
- spec/models/product.rb
|
114
|
+
- spec/models/tag.rb
|
91
115
|
- spec/mongoid_search_spec.rb
|
92
116
|
- spec/spec_helper.rb
|