odba 1.1.3 → 1.1.8
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.
- checksums.yaml +5 -5
- data/.github/workflows/ruby.yml +35 -0
- data/Gemfile +4 -13
- data/History.txt +26 -2
- data/Rakefile +5 -6
- data/lib/odba/cache.rb +38 -35
- data/lib/odba/cache_entry.rb +3 -3
- data/lib/odba/index.rb +3 -7
- data/lib/odba/index_definition.rb +2 -3
- data/lib/odba/marshal.rb +5 -2
- data/lib/odba/persistable.rb +39 -36
- data/lib/odba/storage.rb +32 -15
- data/lib/odba/stub.rb +9 -6
- data/lib/odba/version.rb +1 -1
- data/odba.gemspec +7 -8
- data/test/test_array.rb +1 -0
- data/test/test_cache.rb +1 -0
- data/test/test_cache_entry.rb +1 -0
- data/test/test_connection_pool.rb +1 -0
- data/test/test_drbwrapper.rb +2 -1
- data/test/test_hash.rb +3 -2
- data/test/test_id_server.rb +1 -0
- data/test/test_index.rb +8 -8
- data/test/test_marshal.rb +2 -0
- data/test/test_persistable.rb +3 -2
- data/test/test_storage.rb +70 -123
- data/test/test_stub.rb +6 -4
- metadata +55 -15
- data/.travis.yml +0 -25
- data/test/suite.rb +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: ea6d762105361b4b4d352bc10e485ecbffd0981f6ea6612b6128d0e1932a0264
|
4
|
+
data.tar.gz: 748b12ad5519b0afa70475174e06511260e7e6bf732d1fbe5fbcc1fa5f31ee87
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d1b73f2969bbb84f45ba28320e58f3a4b7a8ea2749e51e39f3ce25e67328cc78935607ab77d30214fca4eec617ccfbdb5974f719b3c6c84746b0ea0cf65b6df
|
7
|
+
data.tar.gz: dbad2568c1ec84b5e247a7d11f60ac58ce5100ac26bc26b9b3fd364c5c16c5cc16a5e975d43281d4c6946e6b1be762eb5831c89def18b963939d4d64cad4b5af
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# This workflow uses actions that are not certified by GitHub.
|
2
|
+
# They are provided by a third-party and are governed by
|
3
|
+
# separate terms of service, privacy policy, and support
|
4
|
+
# documentation.
|
5
|
+
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
6
|
+
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
7
|
+
|
8
|
+
name: Ruby
|
9
|
+
|
10
|
+
on:
|
11
|
+
push:
|
12
|
+
branches: [ master ]
|
13
|
+
pull_request:
|
14
|
+
branches: [ master ]
|
15
|
+
|
16
|
+
jobs:
|
17
|
+
test:
|
18
|
+
runs-on: ubuntu-latest
|
19
|
+
# Using a matrix fails, because /setup-ruby always invokes bundle install without any additional args
|
20
|
+
# Fixed by adding not defining the debugger group in the Gemfile
|
21
|
+
strategy:
|
22
|
+
fail-fast: false
|
23
|
+
matrix:
|
24
|
+
os: [ ubuntu]
|
25
|
+
ruby: [2.7, 3.0, head]
|
26
|
+
continue-on-error: ${{ endsWith(matrix.ruby, 'head') }}
|
27
|
+
steps:
|
28
|
+
- uses: actions/checkout@v2
|
29
|
+
- uses: ruby/setup-ruby@v1
|
30
|
+
with:
|
31
|
+
ruby-version: ${{ matrix.ruby }}
|
32
|
+
bundler-cache: true
|
33
|
+
|
34
|
+
- name: Run tests via rake test
|
35
|
+
run: bundle exec rake test
|
data/Gemfile
CHANGED
@@ -2,16 +2,7 @@ source "https://rubygems.org"
|
|
2
2
|
|
3
3
|
gemspec
|
4
4
|
|
5
|
-
group
|
6
|
-
|
7
|
-
gem '
|
8
|
-
|
9
|
-
end
|
10
|
-
|
11
|
-
group 'debugger' do
|
12
|
-
gem 'pry'
|
13
|
-
gem 'pry-nav'
|
14
|
-
gem 'pry-rescue'
|
15
|
-
gem 'pry-stack_explorer'
|
16
|
-
gem 'pry-doc'
|
17
|
-
end
|
5
|
+
# The group debugger must be disabled for using a matrix build via github/actions
|
6
|
+
group :debugger do
|
7
|
+
gem 'pry-byebug'
|
8
|
+
end if false
|
data/History.txt
CHANGED
@@ -1,8 +1,32 @@
|
|
1
|
+
=== 1.1.8 / 10.03.2021
|
2
|
+
|
3
|
+
* Removed fixed dependency to pg (is optional like mysql2)
|
4
|
+
|
5
|
+
=== 1.1.7 / 20.01.2021
|
6
|
+
|
7
|
+
* Reworked some tests
|
8
|
+
* Updated to use Ruby 3.0.0
|
9
|
+
* Added github actions
|
10
|
+
* Updated to use ydbi 0.5.7
|
11
|
+
|
12
|
+
=== 1.1.6 / 23.01.2016
|
13
|
+
|
14
|
+
* Updated to use ydbi 0.5.6
|
15
|
+
|
16
|
+
=== 1.1.5 / 23.01.2016
|
17
|
+
|
18
|
+
* Remove unused parameter dict for update_fulltext_index
|
19
|
+
|
20
|
+
=== 1.1.4 / 13.12.2017
|
21
|
+
|
22
|
+
* Drop text search dictionaries/configuration before recreating
|
23
|
+
* Remove dictionary argument in fulltext search and index_definition
|
24
|
+
|
1
25
|
=== 1.1.3 / 12.12.2016
|
2
26
|
|
3
27
|
* Avoid errors by always specifying "IF NOT EXISTS" when creating tables and indices
|
4
28
|
* Add utility method get_server_version
|
5
|
-
* Removed
|
29
|
+
* Removed misleading check in generate_dictionary
|
6
30
|
|
7
31
|
=== 1.1.2 / 10.05.2016
|
8
32
|
|
@@ -58,6 +82,6 @@
|
|
58
82
|
|
59
83
|
=== 1.0.0 / 20.12.2010
|
60
84
|
|
61
|
-
* Add ODBA.cache.index_matches(index_name, substring)
|
85
|
+
* Add ODBA.cache.index_matches(index_name, substring)
|
62
86
|
|
63
87
|
* this new method returns all search-terms of a given index (identified by index_name) that start with substring.
|
data/Rakefile
CHANGED
@@ -16,14 +16,13 @@ end
|
|
16
16
|
desc "Run tests"
|
17
17
|
task :default => :test
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
puts "Running test/suite.rb returned #{res.inspect}. Output was redirected to #{log_file}"
|
24
|
-
exit 1 unless res
|
19
|
+
Rake::TestTask.new(:test) do |t|
|
20
|
+
t.libs << "test"
|
21
|
+
t.libs << "lib"
|
22
|
+
t.test_files = FileList["test/**/test_*.rb"]
|
25
23
|
end
|
26
24
|
|
25
|
+
|
27
26
|
require 'rake/clean'
|
28
27
|
CLEAN.include FileList['pkg/*.gem']
|
29
28
|
|
data/lib/odba/cache.rb
CHANGED
@@ -17,14 +17,15 @@ module ODBA
|
|
17
17
|
class Cache
|
18
18
|
include Singleton
|
19
19
|
include DRb::DRbUndumped
|
20
|
-
CLEANER_PRIORITY = 0 # :nodoc:
|
21
|
-
CLEANING_INTERVAL = 5 # :nodoc:
|
20
|
+
CLEANER_PRIORITY = 0 # :nodoc:
|
21
|
+
CLEANING_INTERVAL = 5 # :nodoc:
|
22
22
|
attr_accessor :cleaner_step, :destroy_age, :retire_age, :debug, :file_lock
|
23
|
-
def initialize # :nodoc:
|
23
|
+
def initialize # :nodoc:
|
24
24
|
if(self::class::CLEANING_INTERVAL > 0)
|
25
25
|
start_cleaner
|
26
26
|
end
|
27
27
|
@retire_age = 300
|
28
|
+
@receiver = nil
|
28
29
|
@cache_mutex = Mutex.new
|
29
30
|
@deferred_indices = []
|
30
31
|
@fetched = Hash.new
|
@@ -36,9 +37,9 @@ module ODBA
|
|
36
37
|
@loading_stats = {}
|
37
38
|
@peers = []
|
38
39
|
@file_lock = false
|
39
|
-
@debug ||= false
|
40
|
+
@debug ||= false # Setting @debug to true makes two unit test fail!
|
40
41
|
end
|
41
|
-
# Returns all objects designated by _bulk_fetch_ids_ and registers
|
42
|
+
# Returns all objects designated by _bulk_fetch_ids_ and registers
|
42
43
|
# _odba_caller_ for each of them. Objects which are not yet loaded are loaded
|
43
44
|
# from ODBA#storage.
|
44
45
|
def bulk_fetch(bulk_fetch_ids, odba_caller)
|
@@ -79,7 +80,7 @@ module ODBA
|
|
79
80
|
retire_horizon = now - @retire_age
|
80
81
|
@cleaner_offset = _clean(retire_horizon, @fetched, @cleaner_offset)
|
81
82
|
if(@clean_prefetched)
|
82
|
-
@prefetched_offset = _clean(retire_horizon, @prefetched,
|
83
|
+
@prefetched_offset = _clean(retire_horizon, @prefetched,
|
83
84
|
@prefetched_offset)
|
84
85
|
end
|
85
86
|
if(@debug)
|
@@ -93,8 +94,8 @@ module ODBA
|
|
93
94
|
$stdout.flush
|
94
95
|
end
|
95
96
|
end
|
96
|
-
def _clean(retire_time, holder, offset) # :nodoc:
|
97
|
-
if(offset > holder.size)
|
97
|
+
def _clean(retire_time, holder, offset) # :nodoc:
|
98
|
+
if(offset > holder.size)
|
98
99
|
offset = 0
|
99
100
|
end
|
100
101
|
counter = 0
|
@@ -108,14 +109,14 @@ module ODBA
|
|
108
109
|
return cutoff if(counter > cutoff)
|
109
110
|
}
|
110
111
|
}
|
111
|
-
cutoff
|
112
|
+
cutoff
|
112
113
|
# every once in a while we'll get a 'hash modified during iteration'-Error.
|
113
114
|
# not to worry, we'll just try again later.
|
114
115
|
rescue StandardError
|
115
116
|
offset
|
116
117
|
end
|
117
118
|
# overrides the ODBA_PREFETCH constant and @odba_prefetch instance variable
|
118
|
-
# in Persistable. Use this if a secondary client is more memory-bound than
|
119
|
+
# in Persistable. Use this if a secondary client is more memory-bound than
|
119
120
|
# performance-bound.
|
120
121
|
def clean_prefetched(flag=true)
|
121
122
|
if(@clean_prefetched = flag)
|
@@ -133,7 +134,7 @@ module ODBA
|
|
133
134
|
if(drop_existing && self.indices.include?(name))
|
134
135
|
drop_index(name)
|
135
136
|
end
|
136
|
-
unless(self.indices.include?(name))
|
137
|
+
unless(self.indices.include?(name))
|
137
138
|
index = create_index(definition)
|
138
139
|
if(index.target_klass.respond_to?(:odba_extent))
|
139
140
|
index.fill(index.target_klass.odba_extent)
|
@@ -158,7 +159,7 @@ module ODBA
|
|
158
159
|
}
|
159
160
|
end
|
160
161
|
# Permanently deletes _object_ from the database and deconnects all connected
|
161
|
-
# Persistables
|
162
|
+
# Persistables
|
162
163
|
def delete(odba_object)
|
163
164
|
odba_id = odba_object.odba_id
|
164
165
|
name = odba_object.odba_name
|
@@ -199,7 +200,7 @@ module ODBA
|
|
199
200
|
def drop_index(index_name)
|
200
201
|
transaction {
|
201
202
|
ODBA.storage.drop_index(index_name)
|
202
|
-
self.delete(self.indices[index_name])
|
203
|
+
self.delete(self.indices[index_name])
|
203
204
|
}
|
204
205
|
end
|
205
206
|
def drop_indices # :nodoc:
|
@@ -223,7 +224,7 @@ module ODBA
|
|
223
224
|
# Fetch a Persistable identified by _odba_id_. Registers _odba_caller_ with
|
224
225
|
# the CacheEntry. Loads the Persistable if it is not already loaded.
|
225
226
|
def fetch(odba_id, odba_caller=nil)
|
226
|
-
fetch_or_do(odba_id, odba_caller) {
|
227
|
+
fetch_or_do(odba_id, odba_caller) {
|
227
228
|
load_object(odba_id, odba_caller)
|
228
229
|
}
|
229
230
|
end
|
@@ -233,24 +234,26 @@ module ODBA
|
|
233
234
|
@@receiver_name = RUBY_VERSION >= '1.9' ? :@receiver : '@receiver'
|
234
235
|
def fetch_collection(odba_obj) # :nodoc:
|
235
236
|
collection = []
|
236
|
-
bulk_fetch_ids = []
|
237
|
+
bulk_fetch_ids = []
|
237
238
|
rows = ODBA.storage.restore_collection(odba_obj.odba_id)
|
238
239
|
return collection if rows.empty?
|
240
|
+
idx = 0
|
239
241
|
rows.each { |row|
|
240
|
-
key = ODBA.marshaller.load(row[0])
|
241
|
-
value = ODBA.marshaller.load(row[1])
|
242
|
+
key = row[0].is_a?(Integer) ? row[0] : ODBA.marshaller.load(row[0])
|
243
|
+
value = row[1].is_a?(Integer) ? row[1] : ODBA.marshaller.load(row[1])
|
244
|
+
idx += 1
|
242
245
|
item = nil
|
243
246
|
if([key, value].any? { |item| item.instance_variable_get(@@receiver_name) })
|
244
247
|
odba_id = odba_obj.odba_id
|
245
248
|
warn "stub for #{item.class}:#{item.odba_id} was saved with receiver in collection of #{odba_obj.class}:#{odba_id}"
|
246
249
|
warn "repair: remove [#{odba_id}, #{row[0]}, #{row[1].length}]"
|
247
|
-
ODBA.storage.collection_remove(odba_id, row[0])
|
250
|
+
ODBA.storage.collection_remove(odba_id, row[0])
|
248
251
|
key = key.odba_isolated_stub
|
249
252
|
key_dump = ODBA.marshaller.dump(key)
|
250
253
|
value = value.odba_isolated_stub
|
251
254
|
value_dump = ODBA.marshaller.dump(value)
|
252
255
|
warn "repair: insert [#{odba_id}, #{key_dump}, #{value_dump.length}]"
|
253
|
-
ODBA.storage.collection_store(odba_id, key_dump, value_dump)
|
256
|
+
ODBA.storage.collection_store(odba_id, key_dump, value_dump)
|
254
257
|
end
|
255
258
|
bulk_fetch_ids.push(key.odba_id)
|
256
259
|
bulk_fetch_ids.push(value.odba_id)
|
@@ -259,8 +262,8 @@ module ODBA
|
|
259
262
|
bulk_fetch_ids.compact!
|
260
263
|
bulk_fetch_ids.uniq!
|
261
264
|
bulk_fetch(bulk_fetch_ids, odba_obj)
|
262
|
-
collection.each { |pair|
|
263
|
-
pair.collect! { |item|
|
265
|
+
collection.each { |pair|
|
266
|
+
pair.collect! { |item|
|
264
267
|
if(item.is_a?(ODBA::Stub))
|
265
268
|
## don't fetch: that may result in a conflict when storing.
|
266
269
|
#fetch(item.odba_id, odba_obj)
|
@@ -271,7 +274,7 @@ module ODBA
|
|
271
274
|
ce.odba_add_reference(odba_obj)
|
272
275
|
ce.odba_object
|
273
276
|
else
|
274
|
-
item
|
277
|
+
item
|
275
278
|
end
|
276
279
|
}
|
277
280
|
}
|
@@ -294,7 +297,7 @@ module ODBA
|
|
294
297
|
end
|
295
298
|
end
|
296
299
|
def fetch_named(name, odba_caller, &block) # :nodoc:
|
297
|
-
fetch_or_do(name, odba_caller) {
|
300
|
+
fetch_or_do(name, odba_caller) {
|
298
301
|
dump = ODBA.storage.restore_named(name)
|
299
302
|
if(dump.nil?)
|
300
303
|
odba_obj = block.call
|
@@ -303,7 +306,7 @@ module ODBA
|
|
303
306
|
odba_obj
|
304
307
|
else
|
305
308
|
fetch_or_restore(name, dump, odba_caller)
|
306
|
-
end
|
309
|
+
end
|
307
310
|
}
|
308
311
|
end
|
309
312
|
def fetch_or_do(obj_id, odba_caller, &block) # :nodoc:
|
@@ -332,7 +335,7 @@ module ODBA
|
|
332
335
|
}
|
333
336
|
}
|
334
337
|
end
|
335
|
-
def fill_index(index_name, targets)
|
338
|
+
def fill_index(index_name, targets)
|
336
339
|
self.indices[index_name].fill(targets)
|
337
340
|
end
|
338
341
|
# Checks wether the object identified by _odba_id_ has been loaded.
|
@@ -347,7 +350,7 @@ module ODBA
|
|
347
350
|
index = indices.fetch(index_name)
|
348
351
|
index.matches substring, limit, offset
|
349
352
|
end
|
350
|
-
# Returns a Hash-table containing all stored indices.
|
353
|
+
# Returns a Hash-table containing all stored indices.
|
351
354
|
def indices
|
352
355
|
@indices ||= fetch_named('__cache_server_indices__', self) {
|
353
356
|
{}
|
@@ -420,14 +423,14 @@ module ODBA
|
|
420
423
|
def print_stats
|
421
424
|
fmh = " %-20s | %10s | %5s | %6s | %6s | %6s | %-20s\n"
|
422
425
|
fmt = " %-20s | %10.3f | %5i | %6.3f | %6.3f | %6.3f | %s\n"
|
423
|
-
head = sprintf(fmh,
|
426
|
+
head = sprintf(fmh,
|
424
427
|
"class", "total", "count", "min", "max", "avg", "callers")
|
425
|
-
line = "-" * head.length
|
428
|
+
line = "-" * head.length
|
426
429
|
puts line
|
427
430
|
print head
|
428
431
|
puts line
|
429
|
-
@loading_stats.sort_by { |key, val|
|
430
|
-
val[:total_time]
|
432
|
+
@loading_stats.sort_by { |key, val|
|
433
|
+
val[:total_time]
|
431
434
|
}.reverse.each { |key, val|
|
432
435
|
key = key.to_s
|
433
436
|
if(key.length > 20)
|
@@ -482,13 +485,13 @@ module ODBA
|
|
482
485
|
def size
|
483
486
|
@prefetched.size + @fetched.size
|
484
487
|
end
|
485
|
-
def start_cleaner # :nodoc:
|
488
|
+
def start_cleaner # :nodoc:
|
486
489
|
@cleaner = Thread.new {
|
487
490
|
Thread.current.priority = self::class::CLEANER_PRIORITY
|
488
491
|
loop {
|
489
492
|
sleep(self::class::CLEANING_INTERVAL)
|
490
493
|
begin
|
491
|
-
clean
|
494
|
+
clean
|
492
495
|
rescue StandardError => e
|
493
496
|
puts e
|
494
497
|
puts e.backtrace
|
@@ -547,14 +550,14 @@ module ODBA
|
|
547
550
|
ODBA.storage.collection_remove(odba_id, key_dump)
|
548
551
|
}.size
|
549
552
|
changes + (collection - old_collection).each { |key_dump, value_dump|
|
550
|
-
ODBA.storage.collection_store(odba_id, key_dump, value_dump)
|
553
|
+
ODBA.storage.collection_store(odba_id, key_dump, value_dump)
|
551
554
|
}.size
|
552
555
|
end
|
553
556
|
def store_object_connections(odba_id, target_ids) # :nodoc:
|
554
557
|
ODBA.storage.ensure_object_connections(odba_id, target_ids)
|
555
558
|
end
|
556
|
-
# Executes the block in a transaction. If the transaction fails, all
|
557
|
-
# affected Persistable objects are reloaded from the db (which by then has
|
559
|
+
# Executes the block in a transaction. If the transaction fails, all
|
560
|
+
# affected Persistable objects are reloaded from the db (which by then has
|
558
561
|
# also performed a rollback). Rollback is quite inefficient at this time.
|
559
562
|
def transaction(&block)
|
560
563
|
Thread.current[:txids] = []
|
data/lib/odba/cache_entry.rb
CHANGED
@@ -52,7 +52,7 @@ module ODBA
|
|
52
52
|
object
|
53
53
|
end
|
54
54
|
def odba_cut_connections!
|
55
|
-
@cache_entry_mutex.synchronize do
|
55
|
+
@cache_entry_mutex.synchronize do
|
56
56
|
@accessed_by.each { |object_id, odba_id|
|
57
57
|
if((item = odba_id2ref(odba_id) || object_id2ref(object_id, odba_id)) \
|
58
58
|
&& item.respond_to?(:odba_cut_connection))
|
@@ -77,10 +77,10 @@ module ODBA
|
|
77
77
|
&& (retire_horizon > @last_access)
|
78
78
|
end
|
79
79
|
def odba_retire opts={}
|
80
|
-
# replace with stubs in accessed_by
|
80
|
+
# replace with stubs in accessed_by
|
81
81
|
instance = _odba_object
|
82
82
|
if opts[:force]
|
83
|
-
@cache_entry_mutex.synchronize do
|
83
|
+
@cache_entry_mutex.synchronize do
|
84
84
|
@accessed_by.each do |object_id, odba_id|
|
85
85
|
if item = odba_id2ref(odba_id)
|
86
86
|
item.odba_stubize instance, opts
|
data/lib/odba/index.rb
CHANGED
@@ -23,7 +23,7 @@ module ODBA
|
|
23
23
|
]
|
24
24
|
end
|
25
25
|
attr_accessor :origin_klass, :target_klass, :resolve_origin, :resolve_target,
|
26
|
-
:resolve_search_term, :index_name, :
|
26
|
+
:resolve_search_term, :index_name, :class_filter
|
27
27
|
def initialize(index_definition, origin_module)
|
28
28
|
@origin_klass = origin_module.instance_eval(index_definition.origin_klass.to_s)
|
29
29
|
@target_klass = origin_module.instance_eval(index_definition.target_klass.to_s)
|
@@ -31,7 +31,6 @@ module ODBA
|
|
31
31
|
@resolve_target = index_definition.resolve_target
|
32
32
|
@index_name = index_definition.index_name
|
33
33
|
@resolve_search_term = index_definition.resolve_search_term
|
34
|
-
@dictionary = index_definition.dictionary
|
35
34
|
@class_filter = index_definition.class_filter
|
36
35
|
end
|
37
36
|
def current_origin_ids(target_id) # :nodoc:
|
@@ -381,15 +380,12 @@ module ODBA
|
|
381
380
|
end
|
382
381
|
def fetch_ids(search_term, meta=nil) # :nodoc:
|
383
382
|
limit = meta.respond_to?(:limit) && meta.limit
|
384
|
-
rows = ODBA.storage.retrieve_from_fulltext_index(@index_name,
|
385
|
-
search_term, @dictionary, limit)
|
383
|
+
rows = ODBA.storage.retrieve_from_fulltext_index(@index_name, search_term, limit)
|
386
384
|
set_relevance(meta, rows)
|
387
385
|
rows.collect { |row| row.at(0) }
|
388
386
|
end
|
389
387
|
def do_update_index(origin_id, search_text, target_id=nil) # :nodoc:
|
390
|
-
ODBA.storage.update_fulltext_index(@index_name, origin_id,
|
391
|
-
search_text, target_id,
|
392
|
-
@dictionary)
|
388
|
+
ODBA.storage.update_fulltext_index(@index_name, origin_id, search_text, target_id)
|
393
389
|
end
|
394
390
|
end
|
395
391
|
end
|
@@ -5,8 +5,8 @@ module ODBA
|
|
5
5
|
# IndexDefinition is a convenience class. Load a yaml-dump of this and pass it
|
6
6
|
# to Cache#create_index to introduce new indices
|
7
7
|
class IndexDefinition
|
8
|
-
attr_accessor :index_name, :
|
9
|
-
:target_klass, :resolve_search_term, :resolve_target,
|
8
|
+
attr_accessor :index_name, :origin_klass,
|
9
|
+
:target_klass, :resolve_search_term, :resolve_target,
|
10
10
|
:resolve_origin, :fulltext, :init_source, :class_filter
|
11
11
|
def initialize
|
12
12
|
@index_name = ""
|
@@ -15,7 +15,6 @@ module ODBA
|
|
15
15
|
@resolve_search_term = ""
|
16
16
|
@resolve_target = ""
|
17
17
|
@resolve_origin = ""
|
18
|
-
@dictionary = ""
|
19
18
|
@init_source = ""
|
20
19
|
@fulltext = false
|
21
20
|
@class_filter = :is_a?
|