dnif 0.0.1.beta.6 → 0.1.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/Rakefile +1 -7
- data/dnif.gemspec +3 -3
- data/lib/dnif.rb +6 -6
- data/lib/dnif/document.rb +1 -1
- data/lib/dnif/index.rb +2 -2
- data/lib/dnif/indexer.rb +3 -2
- data/lib/dnif/tasks.rb +4 -1
- data/lib/dnif/version.rb +3 -3
- data/spec/dnif/dnif_spec.rb +7 -5
- data/spec/dnif/index_spec.rb +1 -1
- data/spec/dnif/indexer_spec.rb +1 -1
- data/spec/support/activerecord/models.rb +8 -0
- metadata +8 -12
data/Rakefile
CHANGED
@@ -10,7 +10,7 @@ end
|
|
10
10
|
require "jeweler"
|
11
11
|
|
12
12
|
$LOAD_PATH.unshift('lib')
|
13
|
-
require "dnif"
|
13
|
+
require "dnif/version"
|
14
14
|
|
15
15
|
Jeweler::Tasks.new do |gemspec|
|
16
16
|
gemspec.name = "dnif"
|
@@ -26,11 +26,5 @@ end
|
|
26
26
|
|
27
27
|
Jeweler::GemcutterTasks.new
|
28
28
|
|
29
|
-
desc "Generate gemspec and build gem"
|
30
|
-
task :build_gem do
|
31
|
-
Rake::Task["gemspec"].invoke
|
32
|
-
Rake::Task["build"].invoke
|
33
|
-
end
|
34
|
-
|
35
29
|
require "rspec/core/rake_task"
|
36
30
|
RSpec::Core::RakeTask.new(:spec)
|
data/dnif.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{dnif}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.1.0"
|
9
9
|
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new("
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Rafael Souza"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-10-21}
|
13
13
|
s.description = %q{dnif is a gem to index data using ActiveRecord finders, letting you index your custom methods and not only your table fields}
|
14
14
|
s.email = %q{me@rafaelss.com}
|
15
15
|
s.extra_rdoc_files = [
|
data/lib/dnif.rb
CHANGED
@@ -14,7 +14,6 @@ module Dnif
|
|
14
14
|
autoload :Indexer, "dnif/indexer"
|
15
15
|
autoload :MultiAttribute, "dnif/multi_attribute"
|
16
16
|
autoload :Search, "dnif/search"
|
17
|
-
autoload :Version, "dnif/version"
|
18
17
|
|
19
18
|
def root_path
|
20
19
|
@root_path
|
@@ -66,17 +65,18 @@ module Dnif
|
|
66
65
|
results = client.query(query, options[:index])
|
67
66
|
raise results[:error] if results[:error]
|
68
67
|
|
69
|
-
models =
|
68
|
+
models = {}
|
69
|
+
results[:matches].each do |match|
|
70
70
|
encoded_class_name = match[:attributes]["class_name"].split(',').flatten
|
71
71
|
class_name = Dnif::MultiAttribute.decode(encoded_class_name)
|
72
72
|
|
73
|
-
|
74
|
-
|
75
|
-
memo
|
73
|
+
models[class_name] ||= []
|
74
|
+
models[class_name] << (match[:doc] - encoded_class_name.sum { |c| c.to_i })
|
76
75
|
end
|
77
76
|
|
78
77
|
models.map do |class_name, ids|
|
79
|
-
class_name.constantize
|
78
|
+
klass = class_name.constantize
|
79
|
+
class_name.constantize.where("#{klass.primary_key} IN (?)", ids)
|
80
80
|
end.flatten
|
81
81
|
end
|
82
82
|
|
data/lib/dnif/document.rb
CHANGED
data/lib/dnif/index.rb
CHANGED
data/lib/dnif/indexer.rb
CHANGED
@@ -22,8 +22,9 @@ module Dnif
|
|
22
22
|
schema = Schema.new(self)
|
23
23
|
xml << schema.generate
|
24
24
|
|
25
|
-
results =
|
26
|
-
results.
|
25
|
+
results = self
|
26
|
+
results = where(*indexes[self.name].conditions) if indexes[self.name].conditions.present?
|
27
|
+
results.find_each(:batch_size => 5000) do |object|
|
27
28
|
document = Document.new(object)
|
28
29
|
xml << document.generate
|
29
30
|
end
|
data/lib/dnif/tasks.rb
CHANGED
@@ -64,7 +64,10 @@ namespace :dnif do
|
|
64
64
|
|
65
65
|
desc "Stop sphinx daemon"
|
66
66
|
task :stop => :environment do
|
67
|
-
controller.
|
67
|
+
while controller.running?
|
68
|
+
controller.stop
|
69
|
+
sleep(1)
|
70
|
+
end
|
68
71
|
puts "\n>> daemon stopped" # TODO show this only whether daemon is really stopped
|
69
72
|
end
|
70
73
|
|
data/lib/dnif/version.rb
CHANGED
data/spec/dnif/dnif_spec.rb
CHANGED
@@ -72,8 +72,9 @@ describe Dnif do
|
|
72
72
|
riddle = mock("Riddle")
|
73
73
|
riddle.should_receive(:query).with("my search", "*").and_return(results)
|
74
74
|
Dnif.should_receive(:client).and_return(riddle)
|
75
|
-
|
76
|
-
|
75
|
+
|
76
|
+
Post.should_receive(:where).with("id IN (?)", [1]).and_return([])
|
77
|
+
Comment.should_receive(:where).with("id IN (?)", [2]).and_return([])
|
77
78
|
|
78
79
|
Dnif.search("my search")
|
79
80
|
end
|
@@ -90,8 +91,8 @@ describe Dnif do
|
|
90
91
|
Riddle::Client::Filter.should_receive(:new).with("class_id", [0])
|
91
92
|
Riddle::Client::Filter.should_receive(:new).with("class_id", [1])
|
92
93
|
|
93
|
-
Post.should_receive(:
|
94
|
-
Comment.should_receive(:
|
94
|
+
Post.should_receive(:where).with("id IN (?)", [1]).and_return([])
|
95
|
+
Comment.should_receive(:where).with("id IN (?)", [2]).and_return([])
|
95
96
|
|
96
97
|
Post.search("post")
|
97
98
|
Comment.search("comment")
|
@@ -106,7 +107,8 @@ describe Dnif do
|
|
106
107
|
ActiveRecord::Base.should_receive(:indexes).and_return({ "Post" => mock })
|
107
108
|
|
108
109
|
Riddle::Client::Filter.should_receive(:new).with("class_id", [0])
|
109
|
-
|
110
|
+
|
111
|
+
Post.should_receive(:where).with("id IN (?)", [1]).and_return([])
|
110
112
|
|
111
113
|
Dnif.search("post", :classes => "Post")
|
112
114
|
end
|
data/spec/dnif/index_spec.rb
CHANGED
data/spec/dnif/indexer_spec.rb
CHANGED
@@ -17,7 +17,7 @@ describe Dnif::Indexer do
|
|
17
17
|
|
18
18
|
klass.indexes["Klass"].fields.should == [ :a ]
|
19
19
|
klass.indexes["Klass"].attributes.should == { :b => :integer }
|
20
|
-
klass.indexes["Klass"].conditions.should == "c"
|
20
|
+
klass.indexes["Klass"].conditions.should == ["c"]
|
21
21
|
|
22
22
|
klass.indexes.delete("Klass")
|
23
23
|
end
|
metadata
CHANGED
@@ -1,14 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dnif
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
4
|
+
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
- 0
|
8
7
|
- 1
|
9
|
-
-
|
10
|
-
|
11
|
-
version: 0.0.1.beta.6
|
8
|
+
- 0
|
9
|
+
version: 0.1.0
|
12
10
|
platform: ruby
|
13
11
|
authors:
|
14
12
|
- Rafael Souza
|
@@ -16,7 +14,7 @@ autorequire:
|
|
16
14
|
bindir: bin
|
17
15
|
cert_chain: []
|
18
16
|
|
19
|
-
date: 2010-
|
17
|
+
date: 2010-10-21 00:00:00 -02:00
|
20
18
|
default_executable:
|
21
19
|
dependencies:
|
22
20
|
- !ruby/object:Gem::Dependency
|
@@ -212,20 +210,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
212
210
|
requirements:
|
213
211
|
- - ">="
|
214
212
|
- !ruby/object:Gem::Version
|
215
|
-
hash: -
|
213
|
+
hash: -121134360209263234
|
216
214
|
segments:
|
217
215
|
- 0
|
218
216
|
version: "0"
|
219
217
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
220
218
|
none: false
|
221
219
|
requirements:
|
222
|
-
- - "
|
220
|
+
- - ">="
|
223
221
|
- !ruby/object:Gem::Version
|
224
222
|
segments:
|
225
|
-
-
|
226
|
-
|
227
|
-
- 1
|
228
|
-
version: 1.3.1
|
223
|
+
- 0
|
224
|
+
version: "0"
|
229
225
|
requirements: []
|
230
226
|
|
231
227
|
rubyforge_project:
|