uuidtools 0.1.3 → 0.1.4
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.
- data/CHANGELOG +4 -0
- data/lib/uuidtools.rb +36 -32
- data/rakefile +1 -1
- data/test/create_test.rb +7 -1
- metadata +2 -2
data/CHANGELOG
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
== UUIDTools 0.1.4
|
2
|
+
* improved speed when generating timestamp-based uuids
|
3
|
+
* fixed bug with rapid generation of timestamp uuids leading to dupicates
|
4
|
+
* improved code for detection of mac address
|
1
5
|
== UUIDTools 0.1.3
|
2
6
|
* fixed issue with UUID#raw attempting to call protected class methods
|
3
7
|
== UUIDTools 0.1.2
|
data/lib/uuidtools.rb
CHANGED
@@ -21,7 +21,7 @@
|
|
21
21
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
22
|
#++
|
23
23
|
|
24
|
-
UUID_TOOLS_VERSION = "0.1.
|
24
|
+
UUID_TOOLS_VERSION = "0.1.4"
|
25
25
|
|
26
26
|
$:.unshift(File.dirname(__FILE__))
|
27
27
|
|
@@ -103,6 +103,7 @@ require 'digest/md5'
|
|
103
103
|
# UUID.random_create
|
104
104
|
# => #<UUID:0x19013a UUID:984265dc-4200-4f02-ae70-fe4f48964159>
|
105
105
|
class UUID
|
106
|
+
@@mac_address = nil
|
106
107
|
@@last_timestamp = nil
|
107
108
|
@@last_node_id = nil
|
108
109
|
@@last_clock_sequence = nil
|
@@ -247,7 +248,7 @@ class UUID
|
|
247
248
|
# The node id has changed. Change the clock id.
|
248
249
|
clock_sequence = UUID.convert_byte_string_to_int(UUID.true_random)
|
249
250
|
elsif @@last_timestamp != nil &&
|
250
|
-
gmt_timestamp_100_nanoseconds
|
251
|
+
gmt_timestamp_100_nanoseconds <= @@last_timestamp
|
251
252
|
clock_sequence = clock_sequence + 1
|
252
253
|
end
|
253
254
|
@@last_timestamp = gmt_timestamp_100_nanoseconds
|
@@ -460,42 +461,45 @@ class UUID
|
|
460
461
|
# Returns the MAC address of the current computer's network card.
|
461
462
|
# Returns nil if a MAC address could not be found.
|
462
463
|
def UUID.get_mac_address #:nodoc:
|
463
|
-
if
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
Regexp.new("(#{(["[0-9A-F]{2}"] * 6).join("-")})"))
|
468
|
-
if mac_addresses.size > 0
|
469
|
-
return mac_addresses.first.first.downcase.gsub(/-/, ":")
|
470
|
-
end
|
471
|
-
rescue
|
472
|
-
end
|
473
|
-
else
|
474
|
-
begin
|
475
|
-
ifconfig_output = `ifconfig`
|
476
|
-
mac_addresses = ifconfig_output.scan(
|
477
|
-
Regexp.new("ether (#{(["[0-9a-f]{2}"] * 6).join(":")})"))
|
478
|
-
if mac_addresses.size == 0
|
479
|
-
ifconfig_output = `ifconfig | grep HWaddr | cut -c39-`
|
464
|
+
if @@mac_address.nil?
|
465
|
+
if RUBY_PLATFORM =~ /win/ && !(RUBY_PLATFORM =~ /darwin/)
|
466
|
+
begin
|
467
|
+
ifconfig_output = `ipconfig /all`
|
480
468
|
mac_addresses = ifconfig_output.scan(
|
481
|
-
Regexp.new("(#{(["[0-9a-
|
469
|
+
Regexp.new("(#{(["[0-9a-fA-F]{2}"] * 6).join("-")})"))
|
470
|
+
if mac_addresses.size > 0
|
471
|
+
@@mac_address = mac_addresses.first.first.downcase.gsub(/-/, ":")
|
472
|
+
end
|
473
|
+
rescue
|
482
474
|
end
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
Regexp.new("ether (#{(["[0-9a-f]{2}"] * 6).join(":")})"))
|
487
|
-
end
|
488
|
-
if mac_addresses.size == 0
|
489
|
-
ifconfig_output = `/sbin/ifconfig | grep HWaddr | cut -c39-`
|
475
|
+
else
|
476
|
+
begin
|
477
|
+
ifconfig_output = `ifconfig`
|
490
478
|
mac_addresses = ifconfig_output.scan(
|
491
|
-
Regexp.new("(#{(["[0-9a-
|
479
|
+
Regexp.new("ether (#{(["[0-9a-fA-F]{2}"] * 6).join(":")})"))
|
480
|
+
if mac_addresses.size == 0
|
481
|
+
ifconfig_output = `ifconfig | grep HWaddr | cut -c39-`
|
482
|
+
mac_addresses = ifconfig_output.scan(
|
483
|
+
Regexp.new("(#{(["[0-9a-fA-F]{2}"] * 6).join(":")})"))
|
484
|
+
end
|
485
|
+
if mac_addresses.size == 0
|
486
|
+
ifconfig_output = `/sbin/ifconfig`
|
487
|
+
mac_addresses = ifconfig_output.scan(
|
488
|
+
Regexp.new("ether (#{(["[0-9a-fA-F]{2}"] * 6).join(":")})"))
|
489
|
+
end
|
490
|
+
if mac_addresses.size == 0
|
491
|
+
ifconfig_output = `/sbin/ifconfig | grep HWaddr | cut -c39-`
|
492
|
+
mac_addresses = ifconfig_output.scan(
|
493
|
+
Regexp.new("(#{(["[0-9a-fA-F]{2}"] * 6).join(":")})"))
|
494
|
+
end
|
495
|
+
if mac_addresses.size > 0
|
496
|
+
@@mac_address = mac_addresses.first.first
|
497
|
+
end
|
498
|
+
rescue
|
492
499
|
end
|
493
|
-
if mac_addresses.size > 0
|
494
|
-
return mac_addresses.first.first
|
495
|
-
end
|
496
|
-
rescue
|
497
500
|
end
|
498
501
|
end
|
502
|
+
return @@mac_address
|
499
503
|
end
|
500
504
|
|
501
505
|
# Returns 128 bits of highly unpredictable data.
|
data/rakefile
CHANGED
data/test/create_test.rb
CHANGED
@@ -22,9 +22,15 @@ class CreateTest < Test::Unit::TestCase
|
|
22
22
|
UUID.timestamp_create.to_s,
|
23
23
|
UUID.timestamp_create.to_s)
|
24
24
|
current_time = Time.now
|
25
|
-
|
25
|
+
assert_not_equal(
|
26
26
|
UUID.timestamp_create(current_time).to_s,
|
27
27
|
UUID.timestamp_create(current_time).to_s)
|
28
|
+
uuids = []
|
29
|
+
1000.times do
|
30
|
+
uuids << UUID.timestamp_create
|
31
|
+
end
|
32
|
+
assert_equal(uuids.size, (uuids.map {|x| x.to_s}).uniq.size,
|
33
|
+
"Duplicate timestamp-based UUID generated.")
|
28
34
|
end
|
29
35
|
|
30
36
|
def test_random_create
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
|
|
3
3
|
specification_version: 1
|
4
4
|
name: uuidtools
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.1.
|
7
|
-
date: 2005-
|
6
|
+
version: 0.1.4
|
7
|
+
date: 2005-11-11 00:00:00 -05:00
|
8
8
|
summary: Generation of UUIDs.
|
9
9
|
require_paths:
|
10
10
|
- lib
|