xapian_db 1.2.2 → 1.2.2.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/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ##1.2.2.1 (November 22th, 2011)
2
+
3
+ Fixes:
4
+
5
+ - always use the correct table name for order clauses when indexing
6
+ - allow nil values for attributes declared :as => :date
7
+ - lazy load queue writers (beanstalk_writer, resque_writer) when needed
8
+
1
9
  ##1.2.2 (November 15th, 2011)
2
10
 
3
11
  Features:
data/lib/type_codec.rb CHANGED
@@ -76,6 +76,7 @@ module XapianDb
76
76
  # @param [Date] date a date object to encode
77
77
  # @return [String] the encoded date
78
78
  def self.encode(date)
79
+ return '' unless date
79
80
  begin
80
81
  date.strftime "%Y%m%d"
81
82
  rescue NoMethodError
@@ -40,10 +40,12 @@ module XapianDb
40
40
  "#{self.class}-#{self.id}"
41
41
  end
42
42
 
43
+ def order_condition(primary_key)
44
+ '%s.%s' % [self.table_name, primary_key]
45
+ end
43
46
  end
44
47
 
45
48
  klass.class_eval do
46
-
47
49
  # add the after commit logic
48
50
  after_commit do
49
51
  XapianDb.reindex(self)
@@ -39,6 +39,9 @@ module XapianDb
39
39
  "#{self.class}-#{self.id}"
40
40
  end
41
41
 
42
+ def order_condition(primary_key)
43
+ '%s.%s' % [self.name.parameterize.tableize, primary_key]
44
+ end
42
45
  end
43
46
 
44
47
  klass.class_eval do
@@ -93,9 +93,16 @@ module XapianDb
93
93
  # @param [Symbol] type The writer type; the following adapters are available:
94
94
  # - :direct ({XapianDb::IndexWriters::DirectWriter})
95
95
  # - :beanstalk ({XapianDb::IndexWriters::BeanstalkWriter})
96
+ # - :resque ({XapianDb::IndexWriters::ResqueWriter})
96
97
  def writer(type)
97
98
  # We try to guess the writer name
98
- @_writer = XapianDb::IndexWriters.const_get("#{camelize(type.to_s)}Writer")
99
+ begin
100
+ require File.dirname(__FILE__) + "/index_writers/#{type}_writer"
101
+ @_writer = XapianDb::IndexWriters.const_get("#{camelize(type.to_s)}Writer")
102
+ rescue LoadError
103
+ puts "XapianDb: cannot load #{type} writer; see README for supported writers and how to install neccessary queue infrastructure"
104
+ raise
105
+ end
99
106
  end
100
107
 
101
108
  # Set the url and port of the beanstalk daemon
@@ -67,10 +67,8 @@ module XapianDb
67
67
 
68
68
  # Process the objects in batches to reduce the memory footprint
69
69
  nr_of_batches = (obj_count / BATCH_SIZE) + 1
70
- order_expression = "#{klass.name.parameterize.tableize}.#{primary_key}"
71
- # raise "vor loop"
72
70
  nr_of_batches.times do |batch|
73
- base_query.all(:offset => batch * BATCH_SIZE, :limit => BATCH_SIZE, :order => order_expression).each do |obj|
71
+ base_query.all(:offset => batch * BATCH_SIZE, :limit => BATCH_SIZE, :order => klass.order_condition(primary_key)).each do |obj|
74
72
  reindex obj, false
75
73
  pbar.inc if show_progressbar
76
74
  end
@@ -78,7 +76,6 @@ module XapianDb
78
76
  XapianDb.database.commit
79
77
  true
80
78
  end
81
-
82
79
  end
83
80
  end
84
81
  end
data/lib/xapian_db.rb CHANGED
@@ -19,18 +19,6 @@ files.each {|file| require file}
19
19
  # Configure XapianDB if we are in a Rails app
20
20
  require File.dirname(__FILE__) + '/xapian_db/railtie' if defined?(Rails)
21
21
 
22
- # Try to require the beanstalk writer (depends on beanstalk-client)
23
- begin
24
- require File.dirname(__FILE__) + '/xapian_db/index_writers/beanstalk_writer'
25
- rescue LoadError
26
- end
27
-
28
- # Try to require the resque writer (depends on resque)
29
- begin
30
- require File.dirname(__FILE__) + '/xapian_db/index_writers/resque_writer'
31
- rescue LoadError
32
- end
33
-
34
22
  module XapianDb
35
23
 
36
24
  # Supported languages
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xapian_db
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.2.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,12 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-11-15 00:00:00.000000000 +01:00
12
+ date: 2011-11-21 00:00:00.000000000 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: daemons
17
- requirement: &70092616807260 !ruby/object:Gem::Requirement
17
+ requirement: &70313010336720 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: 1.0.10
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70092616807260
25
+ version_requirements: *70313010336720
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: xapian-ruby
28
- requirement: &70092616806800 !ruby/object:Gem::Requirement
28
+ requirement: &70313010336000 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 1.2.6
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *70092616806800
36
+ version_requirements: *70313010336000
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: guard
39
- requirement: &70092616806420 !ruby/object:Gem::Requirement
39
+ requirement: &70313010335340 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '0'
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *70092616806420
47
+ version_requirements: *70313010335340
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rspec
50
- requirement: &70092616822240 !ruby/object:Gem::Requirement
50
+ requirement: &70313010334460 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: 2.3.1
56
56
  type: :development
57
57
  prerelease: false
58
- version_requirements: *70092616822240
58
+ version_requirements: *70313010334460
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: simplecov
61
- requirement: &70092616821640 !ruby/object:Gem::Requirement
61
+ requirement: &70313010333480 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: 0.3.7
67
67
  type: :development
68
68
  prerelease: false
69
- version_requirements: *70092616821640
69
+ version_requirements: *70313010333480
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: beanstalk-client
72
- requirement: &70092616821140 !ruby/object:Gem::Requirement
72
+ requirement: &70313010348960 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ! '>='
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: 1.1.0
78
78
  type: :development
79
79
  prerelease: false
80
- version_requirements: *70092616821140
80
+ version_requirements: *70313010348960
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: rake
83
- requirement: &70092616820720 !ruby/object:Gem::Requirement
83
+ requirement: &70313010348120 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ! '>='
@@ -88,10 +88,10 @@ dependencies:
88
88
  version: '0'
89
89
  type: :development
90
90
  prerelease: false
91
- version_requirements: *70092616820720
91
+ version_requirements: *70313010348120
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: progressbar
94
- requirement: &70092616820240 !ruby/object:Gem::Requirement
94
+ requirement: &70313010347420 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - ! '>='
@@ -99,10 +99,10 @@ dependencies:
99
99
  version: '0'
100
100
  type: :development
101
101
  prerelease: false
102
- version_requirements: *70092616820240
102
+ version_requirements: *70313010347420
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: resque
105
- requirement: &70092616819740 !ruby/object:Gem::Requirement
105
+ requirement: &70313010346180 !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements:
108
108
  - - ! '>='
@@ -110,7 +110,7 @@ dependencies:
110
110
  version: 1.19.0
111
111
  type: :development
112
112
  prerelease: false
113
- version_requirements: *70092616819740
113
+ version_requirements: *70313010346180
114
114
  description: XapianDb is a ruby gem that combines features of nosql databases and
115
115
  fulltext indexing. It is based on Xapian, an efficient and powerful indexing library
116
116
  email: gernot.kogler (at) garaio (dot) com