diff options
author | Matthias Hecker <apoc@geekosphere.org> | 2016-03-25 17:10:50 +0100 |
---|---|---|
committer | Matthias Hecker <apoc@geekosphere.org> | 2016-03-25 17:10:50 +0100 |
commit | e358601cc521d8aced941eb928fae2d8c53cf0c2 (patch) | |
tree | 561c837be33d865c0ed20e1e432190206636c6ab /lib | |
parent | e8c2391f8e949024a5e31314be6e963cc90ba552 (diff) |
fixes registry for 2.3.0, bug caused by wrong #get_impl
previously getimpl returned eigenclasses aswell which
always was an issue but i guess a minor change in ruby
triggered this.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/rbot/registry.rb | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/lib/rbot/registry.rb b/lib/rbot/registry.rb index 5e905ebb..04892d73 100644 --- a/lib/rbot/registry.rb +++ b/lib/rbot/registry.rb @@ -57,6 +57,15 @@ class Registry @libpath = File.join(File.dirname(__FILE__), 'registry') @format = format load File.join(@libpath, @format+'.rb') if format + # The get_impl method will return all implementations of the + # abstract accessor interface, since we only ever load one + # (the configured one) accessor implementation, we can just assume + # it to be the correct accessor to use. + accessors = AbstractAccessor.get_impl + if accessors.length > 1 + warning 'multiple accessor implementations loaded!' + end + @accessor_class = accessors.first end # Returns a list of supported registry database formats. @@ -68,12 +77,7 @@ class Registry # Creates a new Accessor object for the specified database filename. def create(path, filename) - # The get_impl method will return a list of all the classes that - # implement the accessor interface, since we only ever load one - # (the configured one) accessor implementation, we can just assume - # it to be the correct accessor to use. - cls = AbstractAccessor.get_impl.first - db = cls.new(File.join(path, 'registry_' + @format, filename.downcase)) + db = @accessor_class.new(File.join(path, 'registry_' + @format, filename.downcase)) db.optimize db end @@ -330,7 +334,7 @@ class Registry # Returns all classes from the namespace that implement this interface def self.get_impl - ObjectSpace.each_object(Class).select { |klass| klass < self } + ObjectSpace.each_object(Class).select { |klass| klass.ancestors[1] == self } end end |