diff --git a/ext/c_zookeeper.rb b/ext/c_zookeeper.rb index 39f05aa..80bcd54 100644 --- a/ext/c_zookeeper.rb +++ b/ext/c_zookeeper.rb @@ -1,8 +1,11 @@ -require_relative '../lib/zookeeper/logger' -require_relative '../lib/zookeeper/common' -require_relative '../lib/zookeeper/constants' -require_relative '../lib/zookeeper/exceptions' # zookeeper_c depends on exceptions defined in here -require_relative 'zookeeper_c' +Zookeeper.require_lib( + 'zookeeper/logger', + 'zookeeper/common', + 'zookeeper/constants', + 'zookeeper/exceptions' # zookeeper_c depends on exceptions defined in here +) + +Zookeeper.require_root 'ext/zookeeper_c' # require File.expand_path('../zookeeper_c', __FILE__) diff --git a/ext/zookeeper_base.rb b/ext/zookeeper_base.rb index 38c9aa2..6ec7d23 100644 --- a/ext/zookeeper_base.rb +++ b/ext/zookeeper_base.rb @@ -1,6 +1,7 @@ -require_relative 'c_zookeeper' require 'forwardable' +Zookeeper.require_root 'ext/c_zookeeper' + # The low-level wrapper-specific methods for the C lib # subclassed by the top-level Zookeeper class module Zookeeper diff --git a/lib/zookeeper.rb b/lib/zookeeper.rb index 0a15102..7984ab9 100644 --- a/lib/zookeeper.rb +++ b/lib/zookeeper.rb @@ -8,29 +8,47 @@ require 'logging' module Zookeeper - # establishes the namespace -end + ZOOKEEPER_ROOT = File.expand_path('../..', __FILE__) -require File.expand_path('../zookeeper/core_ext', __FILE__) + # require a path relative to the lib directory + # this is to avoid monkeying explicitly with $LOAD_PATH + # + # @private + def self.require_lib(*relpaths) + relpaths.each do |relpath| + require File.join(ZOOKEEPER_ROOT, 'lib', relpath) + end + end -require 'backports' if RUBY_VERSION =~ /\A1\.8\./ + # require a path that's relative to ZOOKEEPER_ROOT + # @private + def self.require_root(*relpaths) + relpaths.each do |relpath| + require File.join(ZOOKEEPER_ROOT, relpath) + end + end +end -require_relative 'zookeeper/monitor' -require_relative 'zookeeper/logger' -require_relative 'zookeeper/forked' -require_relative 'zookeeper/latch' -require_relative 'zookeeper/acls' -require_relative 'zookeeper/constants' -require_relative 'zookeeper/exceptions' -require_relative 'zookeeper/continuation' -require_relative 'zookeeper/common' -require_relative 'zookeeper/callbacks' -require_relative 'zookeeper/stat' -require_relative 'zookeeper/client_methods' +Zookeeper.require_lib( + 'zookeeper/core_ext', + 'zookeeper/monitor', + 'zookeeper/logger', + 'zookeeper/forked', + 'zookeeper/latch', + 'zookeeper/acls', + 'zookeeper/constants', + 'zookeeper/exceptions', + 'zookeeper/continuation', + 'zookeeper/common', + 'zookeeper/callbacks', + 'zookeeper/stat', + 'zookeeper/client_methods' +) + +#require 'backports' if RUBY_VERSION =~ /\A1\.8\./ # ok, now we construct the client - -require_relative 'zookeeper/client' +Zookeeper.require_lib 'zookeeper/client' module Zookeeper include Constants @@ -90,7 +108,7 @@ class << self end # just for first test, get rid of this soon -require_relative 'zookeeper/compatibility' +Zookeeper.require_lib 'zookeeper/compatibility' if ENV['ZKRB_DEBUG'] Zookeeper.debug_level = Zookeeper::Constants::ZOO_LOG_LEVEL_DEBUG diff --git a/lib/zookeeper/client.rb b/lib/zookeeper/client.rb index 51cc53d..be7a5ae 100644 --- a/lib/zookeeper/client.rb +++ b/lib/zookeeper/client.rb @@ -3,9 +3,9 @@ # or which class we're subclassing. if defined?(::JRUBY_VERSION) - require_relative('../../java/java_base') + Zookeeper.require_root('java/java_base') else - require_relative('../../ext/zookeeper_base') + Zookeeper.require_root('ext/zookeeper_base') end diff --git a/zookeeper.gemspec b/zookeeper.gemspec index ba98846..93fe95c 100644 --- a/zookeeper.gemspec +++ b/zookeeper.gemspec @@ -20,7 +20,7 @@ This library uses version #{Zookeeper::DRIVER_VERSION} of zookeeper bindings. s.homepage = 'https://github.com/slyphon/zookeeper' - s.add_runtime_dependency 'backports', '~> 2.5.1' + # s.add_runtime_dependency 'backports', '~> 2.5.1' s.add_runtime_dependency 'logging', '~> 1.7.2' s.files = `git ls-files`.split("\n")