diff --git a/fog.gemspec b/fog.gemspec index 587cf2593..c1b594885 100644 --- a/fog.gemspec +++ b/fog.gemspec @@ -51,7 +51,6 @@ Gem::Specification.new do |s| s.add_dependency('nokogiri', '~>1.5') s.add_dependency('ruby-hmac') s.add_dependency('unicode', "~> 0.4.4") - s.add_dependency('uuidtools', ">= 2.1.0") ## List your development dependencies here. Development dependencies are ## those that are only needed during development diff --git a/lib/fog/core.rb b/lib/fog/core.rb index b12e54e64..38d618ad6 100644 --- a/lib/fog/core.rb +++ b/lib/fog/core.rb @@ -31,6 +31,7 @@ require 'fog/core/time' require 'fog/core/timeout' require 'fog/core/wait_for' require 'fog/core/class_from_string' +require 'fog/core/uuid' # data exchange specific (to be extracted and used on a per provider basis) require 'fog/xml' diff --git a/lib/fog/core/uuid.rb b/lib/fog/core/uuid.rb new file mode 100644 index 000000000..77ec36de5 --- /dev/null +++ b/lib/fog/core/uuid.rb @@ -0,0 +1,21 @@ +require 'securerandom' + +module Fog + class UUID + class << self + + def uuid + if supported? + SecureRandom.uuid + else + raise "UUID generation is not supported by your ruby implementation. Please try upgrading to Ruby 1.9.x." + end + end + + def supported? + SecureRandom.respond_to?(:uuid) + end + + end + end +end \ No newline at end of file diff --git a/tests/core/uuid_tests.rb b/tests/core/uuid_tests.rb new file mode 100644 index 000000000..a96c03385 --- /dev/null +++ b/tests/core/uuid_tests.rb @@ -0,0 +1,16 @@ +Shindo.tests('Fog::UUID', 'core') do + + tests('supported?').succeeds do + Fog::UUID.supported? == SecureRandom.respond_to?(:uuid) + end + + if Fog::UUID.supported? + tests('success').succeeds do + Fog::UUID.uuid =~ /[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/ + end + else + tests('success').succeeds do + raises(RuntimeError) { Fog::UUID.uuid } + end + end +end \ No newline at end of file