Skip to content

Commit

Permalink
clean up require logic
Browse files Browse the repository at this point in the history
  • Loading branch information
kddnewton committed May 10, 2016
1 parent 9809f98 commit d1f1f8c
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 28 deletions.
25 changes: 18 additions & 7 deletions lib/humidifier/aws_shim.rb
Expand Up @@ -21,13 +21,17 @@ class AwsShim
attr_accessor :shim

def initialize
self.shim = begin
require 'aws-sdk'
nil
rescue LoadError
AwsAdapters::Noop.new
end
self.shim ||= AwsAdapters.const_get(Object.const_defined?(:AWS) ? :SDKV1 : :SDKV2).new
try_require_sdk('aws-sdk-v1')
try_require_sdk('aws-sdk')

self.shim =
if Object.const_defined?(:AWS)
AwsAdapters::SDKV1.new
elsif Object.const_defined?(:Aws)
AwsAdapters::SDKV2.new
else
AwsAdapters::Noop.new
end
end

class << self
Expand All @@ -42,5 +46,12 @@ def shim
instance.shim
end
end

private

def try_require_sdk(name)
require name
rescue LoadError # rubocop:disable Lint/HandleExceptions
end
end
end
2 changes: 1 addition & 1 deletion lib/humidifier/version.rb
@@ -1,3 +1,3 @@
module Humidifier
VERSION = '0.0.30'.freeze
VERSION = '0.0.31'.freeze
end
12 changes: 4 additions & 8 deletions test/aws_shim_test.rb
Expand Up @@ -18,18 +18,14 @@ def test_initialize_noop
end

def test_initialize_sdk_v1
with_faked_sdk_require do
with_sdk_v1_loaded do
assert_kind_of Humidifier::AwsAdapters::SDKV1, Humidifier::AwsShim.new.shim
end
with_sdk_v1_loaded do
assert_kind_of Humidifier::AwsAdapters::SDKV1, Humidifier::AwsShim.new.shim
end
end

def test_initialize_sdk_v2
with_faked_sdk_require do
with_sdk_v2_loaded do
assert_kind_of Humidifier::AwsAdapters::SDKV2, Humidifier::AwsShim.new.shim
end
with_sdk_v2_loaded do
assert_kind_of Humidifier::AwsAdapters::SDKV2, Humidifier::AwsShim.new.shim
end
end

Expand Down
12 changes: 0 additions & 12 deletions test/support/test_helpers.rb
Expand Up @@ -54,18 +54,6 @@ def suppress_warnings
$VERBOSE = warn_level
end

# sorry
def with_faked_sdk_require
filepath = File.expand_path(File.join('..', '..', 'aws-sdk.rb'), __FILE__)
begin
FileUtils.touch(filepath)
yield
ensure
FileUtils.rm(filepath)
$LOADED_FEATURES.reject! { |feature| feature.match(/aws-sdk/) }
end
end

def with_mocked_serializer(value)
mock = Minitest::Mock.new
mock.expect(:call, value, [value])
Expand Down

0 comments on commit d1f1f8c

Please sign in to comment.