dnif 0.0.1.beta.6 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|