dnif 0.0.1.alpha.3 → 0.0.1.alpha.4
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/dnif.gemspec +2 -2
- data/lib/dnif/configuration.rb +32 -0
- data/lib/dnif/search.rb +3 -1
- data/test/unit/test_configuration.rb +5 -0
- data/test/unit/test_search.rb +2 -1
- metadata +3 -3
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.0.1.alpha.
|
8
|
+
s.version = "0.0.1.alpha.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Rafael Souza"]
|
12
|
-
s.date = %q{2010-07-
|
12
|
+
s.date = %q{2010-07-02}
|
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/configuration.rb
CHANGED
@@ -26,5 +26,37 @@ module Dnif
|
|
26
26
|
yield name, class_name
|
27
27
|
end
|
28
28
|
end
|
29
|
+
|
30
|
+
# Code extracted from Ultrasphinx
|
31
|
+
# Configuration file parser.
|
32
|
+
def self.options_for(heading, path)
|
33
|
+
# Evaluate ERB
|
34
|
+
template = ERB.new(File.open(path) {|f| f.read})
|
35
|
+
contents = template.result(binding)
|
36
|
+
|
37
|
+
# Find the correct heading.
|
38
|
+
section = contents[/^#{heading.gsub('/', '__')}\s*?\{(.*?)\}/m, 1]
|
39
|
+
|
40
|
+
if section
|
41
|
+
# Strip comments and leading/trailing whitespace
|
42
|
+
section.gsub!(/^\s*(.*?)\s*(?:#.*)?$/, '\1')
|
43
|
+
|
44
|
+
# Convert to a hash
|
45
|
+
returning({}) do |options|
|
46
|
+
lines = section.split(/\n+/)
|
47
|
+
while line = lines.shift
|
48
|
+
if line =~ /(.*?)\s*=\s*(.*)/
|
49
|
+
key, value = $1, [$2]
|
50
|
+
value << (line = lines.shift) while line =~ /\\$/
|
51
|
+
options[key] = value.join("\n ")
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
else
|
56
|
+
# XXX Is it safe to raise here?
|
57
|
+
puts "warning; heading #{heading} not found in #{path}; it may be corrupted. "
|
58
|
+
{}
|
59
|
+
end
|
60
|
+
end
|
29
61
|
end
|
30
62
|
end
|
data/lib/dnif/search.rb
CHANGED
@@ -3,7 +3,9 @@ module Dnif
|
|
3
3
|
def self.search(query, options = {})
|
4
4
|
options.reverse_merge!(:index => '*')
|
5
5
|
|
6
|
-
|
6
|
+
Dnif.root_path ||= File.expand_path(File.dirname("."))
|
7
|
+
searchd = Dnif::Configuration.options_for("searchd", File.join(Dnif.root_path, "config/sphinx", Dnif.environment + ".erb"))
|
8
|
+
client = Riddle::Client.new(*searchd["listen"].split(":"))
|
7
9
|
|
8
10
|
if not options[:class].nil?
|
9
11
|
filter_value = Dnif::MultiAttribute.encode(options[:class]).split(",").map(&:to_i)
|
@@ -29,4 +29,9 @@ class TestConfiguration < Test::Unit::TestCase
|
|
29
29
|
assert_equal ["users_main", "people_main", "orders_main", "notes_main"], names
|
30
30
|
assert_equal ["User", "Person", "Order", "Note"], classes
|
31
31
|
end
|
32
|
+
|
33
|
+
test ".options_for" do
|
34
|
+
client = Dnif::Configuration.options_for("searchd", File.join(Dnif.root_path, "templates", "config.erb"))
|
35
|
+
assert client.is_a?(Hash)
|
36
|
+
end
|
32
37
|
end
|
data/test/unit/test_search.rb
CHANGED
@@ -21,7 +21,8 @@ class TestSearch < Test::Unit::TestCase
|
|
21
21
|
}]
|
22
22
|
}
|
23
23
|
|
24
|
-
|
24
|
+
Dnif::Configuration.expects(:options_for).twice.returns({ "listen" => "127.0.0.1:3333" })
|
25
|
+
Riddle::Client.any_instance.expects(:query).twice.with("post", "*").returns(results_for_post, results_for_comment)
|
25
26
|
|
26
27
|
Post.expects(:find_all_by_id).once.with([1])
|
27
28
|
Comment.expects(:find_all_by_id).once.with([2])
|
metadata
CHANGED
@@ -7,8 +7,8 @@ version: !ruby/object:Gem::Version
|
|
7
7
|
- 0
|
8
8
|
- 1
|
9
9
|
- alpha
|
10
|
-
-
|
11
|
-
version: 0.0.1.alpha.
|
10
|
+
- 4
|
11
|
+
version: 0.0.1.alpha.4
|
12
12
|
platform: ruby
|
13
13
|
authors:
|
14
14
|
- Rafael Souza
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2010-07-
|
19
|
+
date: 2010-07-02 00:00:00 -03:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|