xapian_db 0.5.12 → 0.5.13

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/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ##0.5.13 (June 20th, 2011)
2
+
3
+ Fixes:
4
+
5
+ - handle attribute objects that return nil from to_s
6
+
7
+ Features:
8
+
9
+ - updated the xapian source to 1.2.6
10
+ - xapian source and build artefacts are removed after successful install
11
+ - added support for namespaced classes
12
+
1
13
  ##0.5.12 (April 28th, 2011)
2
14
 
3
15
  Fixes:
data/Rakefile CHANGED
@@ -9,7 +9,7 @@ def system!(cmd)
9
9
  system(cmd) or raise
10
10
  end
11
11
 
12
- ver = '1.2.5'
12
+ ver = '1.2.6'
13
13
  source_dir = 'xapian_source'
14
14
  core = "xapian-core-#{ver}"
15
15
  bindings = "xapian-bindings-#{ver}"
@@ -38,6 +38,15 @@ task :default do
38
38
  system! "make clean all"
39
39
  end
40
40
 
41
- system! "cp -r #{bindings}/ruby/.libs/_xapian.* lib"
42
- system! "cp #{bindings}/ruby/xapian.rb lib"
41
+ system! "cp -r #{bindings}/ruby/.libs/_xapian.* lib"
42
+ system! "cp #{bindings}/ruby/xapian.rb lib"
43
+
44
+ system! "rm lib/*.a"
45
+ system! "rm lib/*.la"
46
+ system! "rm lib/*.lai"
47
+
48
+ system! "rm -R #{bindings}"
49
+ system! "rm -R #{core}"
50
+ system! "rm -R #{source_dir}"
51
+
43
52
  end
@@ -66,6 +66,8 @@ module XapianDb
66
66
  def add_doc_helper_methods_to(a_module)
67
67
  a_module.instance_eval do
68
68
 
69
+ include XapianDb::Utilities
70
+
69
71
  # Implement access to the model id
70
72
  define_method :id do
71
73
  return @id unless @d.nil?
@@ -79,7 +81,7 @@ module XapianDb
79
81
  return @indexed_object unless @indexed_object.nil?
80
82
  # retrieve the class and id from data
81
83
  klass_name, id = data.split("-")
82
- klass = Kernel.const_get(klass_name)
84
+ klass = constantize klass_name
83
85
  @indexed_object = klass.find(id.to_i)
84
86
  end
85
87
 
@@ -65,6 +65,8 @@ module XapianDb
65
65
  def add_doc_helper_methods_to(a_module)
66
66
  a_module.instance_eval do
67
67
 
68
+ include XapianDb::Utilities
69
+
68
70
  # Implement access to the model id
69
71
  define_method :id do
70
72
  return @id unless @d.nil?
@@ -78,7 +80,7 @@ module XapianDb
78
80
  return @indexed_object unless @indexed_object.nil?
79
81
  # retrieve the class and id from data
80
82
  klass_name, id = data.split("-")
81
- klass = Kernel.const_get(klass_name)
83
+ klass = constantize klass_name
82
84
  @indexed_object = klass.get(id.to_i)
83
85
  end
84
86
  end
@@ -7,6 +7,8 @@ module XapianDb
7
7
  # Base class for a Xapian database
8
8
  class Database
9
9
 
10
+ include XapianDb::Utilities
11
+
10
12
  # A readable xapian database (see http://xapian.org/docs/apidoc/html/classXapian_1_1Database.html)
11
13
  attr_reader :reader
12
14
 
@@ -104,7 +106,7 @@ module XapianDb
104
106
  class_name = match.document.values[0].value
105
107
  # We must add 1 to the collapse_count since collapse_count means
106
108
  # "how many other matches are there?"
107
- facets[Kernel.const_get(class_name)] = match.collapse_count + 1
109
+ facets[constantize class_name] = match.collapse_count + 1
108
110
  end
109
111
  facets
110
112
  end
@@ -8,20 +8,22 @@ module XapianDb
8
8
  # @author Gernot Kogler
9
9
  class BeanstalkWorker
10
10
 
11
+ include XapianDb::Utilities
12
+
11
13
  def index_task(options)
12
- klass = Kernel.const_get options[:class]
14
+ klass = constantize options[:class]
13
15
  obj = klass.respond_to?(:get) ? klass.get(options[:id].to_i) : klass.find(options[:id].to_i)
14
16
  DirectWriter.index obj
15
17
  end
16
18
 
17
19
  def unindex_task(options)
18
- klass = Kernel.const_get options[:class]
20
+ klass = constantize options[:class]
19
21
  obj = klass.respond_to?(:get) ? klass.get(options[:id].to_i) : klass.find(options[:id].to_i)
20
22
  DirectWriter.unindex obj
21
23
  end
22
24
 
23
25
  def reindex_class_task(options)
24
- klass = Kernel.const_get options[:class]
26
+ klass = constantize options[:class]
25
27
  DirectWriter.reindex_class klass, :verbose => false
26
28
  end
27
29
 
@@ -86,11 +86,8 @@ module XapianDb
86
86
  end
87
87
  end
88
88
  end
89
-
90
89
  end
91
90
 
92
- private
93
-
94
91
  # Get the values to index from an object
95
92
  def get_values_to_index_from(obj)
96
93
 
@@ -101,8 +98,9 @@ module XapianDb
101
98
  # we use the attributes values (works well for active_record and datamapper objects)
102
99
  return obj.attributes.values if obj.respond_to?(:attributes) && obj.attributes.is_a?(Hash)
103
100
 
104
- # The object is unkown and will be indexed by its to_s method
105
- return [obj]
101
+ # The object is unkown and will be indexed by its to_s method; if to_s retruns nil, we
102
+ # will not index it
103
+ obj.to_s.nil? ? [] : [obj]
106
104
  end
107
105
 
108
106
  end
@@ -16,6 +16,8 @@ module XapianDb
16
16
  # @author Gernot Kogler
17
17
  class Resultset < Array
18
18
 
19
+ include XapianDb::Utilities
20
+
19
21
  # The number of hits
20
22
  # @return [Integer]
21
23
  attr_reader :hits
@@ -88,8 +90,6 @@ module XapianDb
88
90
  @current_page < @total_pages ? (@current_page + 1): nil
89
91
  end
90
92
 
91
- private
92
-
93
93
  # Build an empty resultset
94
94
  def build_empty_resultset
95
95
  @hits = 0
@@ -104,7 +104,7 @@ module XapianDb
104
104
  # @return [Xapian::Match] the decorated match
105
105
  def decorate(match)
106
106
  klass_name = match.document.values[0].value
107
- blueprint = XapianDb::DocumentBlueprint.blueprint_for(Kernel.const_get(klass_name))
107
+ blueprint = XapianDb::DocumentBlueprint.blueprint_for(constantize klass_name)
108
108
  match.document.extend blueprint.accessors_module
109
109
  match.document.instance_variable_set :@score, match.percent
110
110
  match
@@ -12,5 +12,17 @@ module XapianDb
12
12
  string.split(/[^a-z0-9]/i).map{|w| w.capitalize}.join
13
13
  end
14
14
 
15
+ # Taken from Rails
16
+ def constantize(camel_cased_word)
17
+ names = camel_cased_word.split('::')
18
+ names.shift if names.empty? || names.first.empty?
19
+
20
+ constant = Object
21
+ names.each do |name|
22
+ constant = constant.const_defined?(name) ? constant.const_get(name) : constant.const_missing(name)
23
+ end
24
+ constant
25
+ end
26
+
15
27
  end
16
28
  end
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xapian_db
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 5
8
- - 12
9
- version: 0.5.12
4
+ prerelease:
5
+ version: 0.5.13
10
6
  platform: ruby
11
7
  authors:
12
8
  - Gernot Kogler
@@ -14,7 +10,7 @@ autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
12
 
17
- date: 2011-05-02 00:00:00 +02:00
13
+ date: 2011-06-20 00:00:00 +02:00
18
14
  default_executable:
19
15
  dependencies:
20
16
  - !ruby/object:Gem::Dependency
@@ -25,10 +21,6 @@ dependencies:
25
21
  requirements:
26
22
  - - ">="
27
23
  - !ruby/object:Gem::Version
28
- segments:
29
- - 1
30
- - 0
31
- - 10
32
24
  version: 1.0.10
33
25
  type: :runtime
34
26
  version_requirements: *id001
@@ -40,10 +32,6 @@ dependencies:
40
32
  requirements:
41
33
  - - ">="
42
34
  - !ruby/object:Gem::Version
43
- segments:
44
- - 2
45
- - 3
46
- - 1
47
35
  version: 2.3.1
48
36
  type: :development
49
37
  version_requirements: *id002
@@ -55,10 +43,6 @@ dependencies:
55
43
  requirements:
56
44
  - - ">="
57
45
  - !ruby/object:Gem::Version
58
- segments:
59
- - 0
60
- - 3
61
- - 7
62
46
  version: 0.3.7
63
47
  type: :development
64
48
  version_requirements: *id003
@@ -70,10 +54,6 @@ dependencies:
70
54
  requirements:
71
55
  - - ">="
72
56
  - !ruby/object:Gem::Version
73
- segments:
74
- - 1
75
- - 1
76
- - 0
77
57
  version: 1.1.0
78
58
  type: :development
79
59
  version_requirements: *id004
@@ -124,8 +104,8 @@ files:
124
104
  - lib/xapian_db/utilities.rb
125
105
  - lib/xapian_db.rb
126
106
  - tasks/beanstalk_worker.rake
127
- - xapian_source/xapian-bindings-1.2.5.tar.gz
128
- - xapian_source/xapian-core-1.2.5.tar.gz
107
+ - xapian_source/xapian-bindings-1.2.6.tar.gz
108
+ - xapian_source/xapian-core-1.2.6.tar.gz
129
109
  - LICENSE
130
110
  - README.rdoc
131
111
  - CHANGELOG.md
@@ -149,23 +129,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
149
129
  requirements:
150
130
  - - ">="
151
131
  - !ruby/object:Gem::Version
152
- segments:
153
- - 0
154
132
  version: "0"
155
133
  required_rubygems_version: !ruby/object:Gem::Requirement
156
134
  none: false
157
135
  requirements:
158
136
  - - ">="
159
137
  - !ruby/object:Gem::Version
160
- segments:
161
- - 1
162
- - 3
163
- - 6
164
138
  version: 1.3.6
165
139
  requirements: []
166
140
 
167
141
  rubyforge_project:
168
- rubygems_version: 1.3.7
142
+ rubygems_version: 1.6.2
169
143
  signing_key:
170
144
  specification_version: 3
171
145
  summary: Ruby library to use a Xapian db as a key/value store with high performance fulltext search
Binary file