uuid 1.0.0 → 1.0.1
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/MIT-LICENSE +1 -1
- data/README +76 -76
- data/Rakefile +135 -136
- data/bin/uuid-setup +3 -4
- data/changelog.txt +6 -0
- data/lib/uuid.rb +407 -384
- data/test/test-uuid.rb +26 -26
- metadata +30 -24
data/MIT-LICENSE
CHANGED
data/README
CHANGED
@@ -1,81 +1,81 @@
|
|
1
|
-
= UUID Generator
|
2
|
-
|
3
|
-
Generates universally unique identifiers (UUIDs) for use in distributed
|
4
|
-
applications. Based on {RFC 4122}[http://www.ietf.org/rfc/rfc4122.txt].
|
5
|
-
|
6
|
-
|
7
|
-
== Download
|
8
|
-
|
9
|
-
The latest version of the UUID generator can be found in the Reliable
|
10
|
-
Messaging project
|
11
|
-
|
12
|
-
* http://rubyforge.org/projects/reliable-msg/
|
13
|
-
|
14
|
-
For more information
|
15
|
-
|
16
|
-
* http://trac.labnotes.org/cgi-bin/trac.cgi/wiki/Ruby/UuidGenerator
|
17
|
-
|
1
|
+
= UUID Generator
|
2
|
+
|
3
|
+
Generates universally unique identifiers (UUIDs) for use in distributed
|
4
|
+
applications. Based on {RFC 4122}[http://www.ietf.org/rfc/rfc4122.txt].
|
5
|
+
|
6
|
+
|
7
|
+
== Download
|
8
|
+
|
9
|
+
The latest version of the UUID generator can be found in the Reliable
|
10
|
+
Messaging project
|
11
|
+
|
12
|
+
* http://rubyforge.org/projects/reliable-msg/
|
13
|
+
|
14
|
+
For more information
|
15
|
+
|
16
|
+
* http://trac.labnotes.org/cgi-bin/trac.cgi/wiki/Ruby/UuidGenerator
|
17
|
+
|
18
18
|
|
19
19
|
== Installation
|
20
|
-
|
21
|
-
You can download the sources directly, or install the GEM package
|
22
|
-
(recommended) with
|
23
|
-
|
24
|
-
gem install uuid
|
25
|
-
|
26
|
-
Once installed, create a <tt>uuid.state</tt> file by running
|
27
|
-
|
28
|
-
uuid-setup
|
29
|
-
|
30
|
-
|
31
|
-
== Example
|
32
|
-
|
33
|
-
require_gem 'uuid'
|
34
|
-
|
35
|
-
10.times do
|
36
|
-
p UUID.new
|
37
|
-
end
|
38
|
-
|
39
|
-
|
40
|
-
== UUID state file
|
41
|
-
|
42
|
-
The UUID generator uses a state file (<tt>uuid.state</tt>) to hold the
|
43
|
-
MAC address and sequence number.
|
44
|
-
|
45
|
-
The MAC address is used to generate identifiers that are unique to your
|
46
|
-
machine, preventing conflicts in distributed applications. The MAC
|
47
|
-
address is six bytes (48 bit) long. It is automatically extracted from
|
48
|
-
one of the network cards on your machine by running +ipconfig+
|
49
|
-
(Windows) or +ifconfig+ (Linux, UNIX, et al). You can override the MAC
|
50
|
-
address by editing the <tt>uuid.state</tt> file yourself.
|
51
|
-
|
52
|
-
The sequence number is incremented each time the UUID generator is
|
53
|
-
first used by the application, to prevent multiple processes from
|
54
|
-
generating the same set of identifiers, and deal with changes to the
|
55
|
-
system clock.
|
56
|
-
|
57
|
-
The UUID state file is created with
|
58
|
-
|
59
|
-
uuid-setup
|
60
|
-
|
61
|
-
It is created in the installation directory. If you installed the UUID
|
62
|
-
generator as a Gem, it will be created in the Gem's directory. However,
|
63
|
-
the UUID generator will look for the <tt>uuid.state</tt> first in the
|
64
|
-
local directory, and then in the installation directory. You can use
|
65
|
-
that to maintain separate state files for different applications.
|
66
|
-
However, make sure they generate unique identifiers by using different
|
67
|
-
MAC addresses in each state file.
|
68
|
-
|
69
|
-
|
70
|
-
== Change log
|
71
|
-
|
72
|
-
:include: changelog.txt
|
73
|
-
|
20
|
+
|
21
|
+
You can download the sources directly, or install the GEM package
|
22
|
+
(recommended) with
|
23
|
+
|
24
|
+
gem install uuid
|
25
|
+
|
26
|
+
Once installed, create a <tt>uuid.state</tt> file by running
|
27
|
+
|
28
|
+
uuid-setup
|
29
|
+
|
30
|
+
|
31
|
+
== Example
|
32
|
+
|
33
|
+
require_gem 'uuid'
|
34
|
+
|
35
|
+
10.times do
|
36
|
+
p UUID.new
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
== UUID state file
|
41
|
+
|
42
|
+
The UUID generator uses a state file (<tt>uuid.state</tt>) to hold the
|
43
|
+
MAC address and sequence number.
|
44
|
+
|
45
|
+
The MAC address is used to generate identifiers that are unique to your
|
46
|
+
machine, preventing conflicts in distributed applications. The MAC
|
47
|
+
address is six bytes (48 bit) long. It is automatically extracted from
|
48
|
+
one of the network cards on your machine by running +ipconfig+
|
49
|
+
(Windows) or +ifconfig+ (Linux, UNIX, et al). You can override the MAC
|
50
|
+
address by editing the <tt>uuid.state</tt> file yourself.
|
51
|
+
|
52
|
+
The sequence number is incremented each time the UUID generator is
|
53
|
+
first used by the application, to prevent multiple processes from
|
54
|
+
generating the same set of identifiers, and deal with changes to the
|
55
|
+
system clock.
|
56
|
+
|
57
|
+
The UUID state file is created with
|
58
|
+
|
59
|
+
uuid-setup
|
60
|
+
|
61
|
+
It is created in the installation directory. If you installed the UUID
|
62
|
+
generator as a Gem, it will be created in the Gem's directory. However,
|
63
|
+
the UUID generator will look for the <tt>uuid.state</tt> first in the
|
64
|
+
local directory, and then in the installation directory. You can use
|
65
|
+
that to maintain separate state files for different applications.
|
66
|
+
However, make sure they generate unique identifiers by using different
|
67
|
+
MAC addresses in each state file.
|
68
|
+
|
69
|
+
|
70
|
+
== Change log
|
71
|
+
|
72
|
+
:include: changelog.txt
|
73
|
+
|
74
74
|
|
75
75
|
== License
|
76
|
-
|
77
|
-
This package is licensed under the MIT license and/or the {Creative
|
78
|
-
Commons Attribution-ShareAlike}[http://creativecommons.org/licenses/by-sa/2.5/legalcode].
|
79
|
-
|
80
|
-
:include: MIT-LICENSE
|
76
|
+
|
77
|
+
This package is licensed under the MIT license and/or the {Creative
|
78
|
+
Commons Attribution-ShareAlike}[http://creativecommons.org/licenses/by-sa/2.5/legalcode].
|
79
|
+
|
80
|
+
:include: MIT-LICENSE
|
81
81
|
|
data/Rakefile
CHANGED
@@ -1,149 +1,148 @@
|
|
1
|
-
# Adapted from the rake Rakefile.
|
2
|
-
|
3
|
-
require "rubygems"
|
4
|
-
Gem::manage_gems
|
5
|
-
require "rake/testtask"
|
6
|
-
require "rake/rdoctask"
|
7
|
-
require "rake/gempackagetask"
|
8
|
-
|
9
|
-
|
1
|
+
# Adapted from the rake Rakefile.
|
2
|
+
|
3
|
+
require "rubygems"
|
4
|
+
Gem::manage_gems
|
5
|
+
require "rake/testtask"
|
6
|
+
require "rake/rdoctask"
|
7
|
+
require "rake/gempackagetask"
|
8
|
+
|
9
|
+
|
10
10
|
desc "Default Task"
|
11
|
-
task :default => [:test, :rdoc]
|
12
|
-
|
13
|
-
|
14
|
-
desc "Run all test cases"
|
15
|
-
Rake::TestTask.new do |test|
|
16
|
-
test.verbose = true
|
17
|
-
test.test_files = ["test/test-uuid.rb"]
|
18
|
-
#test.warning = true
|
19
|
-
end
|
20
|
-
|
21
|
-
|
22
|
-
# Create the documentation.
|
23
|
-
Rake::RDocTask.new do |rdoc|
|
24
|
-
rdoc.main = "README"
|
25
|
-
rdoc.rdoc_files.include("README", "lib/**/*.rb")
|
26
|
-
rdoc.title = "UUID generator"
|
27
|
-
end
|
28
|
-
|
29
|
-
# Handle version number.
|
30
|
-
class Version
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
end
|
76
|
-
end
|
11
|
+
task :default => [:test, :rdoc]
|
12
|
+
|
13
|
+
|
14
|
+
desc "Run all test cases"
|
15
|
+
Rake::TestTask.new do |test|
|
16
|
+
test.verbose = true
|
17
|
+
test.test_files = ["test/test-uuid.rb"]
|
18
|
+
#test.warning = true
|
19
|
+
end
|
20
|
+
|
21
|
+
|
22
|
+
# Create the documentation.
|
23
|
+
Rake::RDocTask.new do |rdoc|
|
24
|
+
rdoc.main = "README"
|
25
|
+
rdoc.rdoc_files.include("README", "lib/**/*.rb")
|
26
|
+
rdoc.title = "UUID generator"
|
27
|
+
end
|
28
|
+
|
29
|
+
# Handle version number.
|
30
|
+
class Version
|
31
|
+
|
32
|
+
PATTERN = /(\s*)VERSION.*(\d+\.\d+\.\d+)/
|
33
|
+
|
34
|
+
def initialize file, new_version
|
35
|
+
@file = file
|
36
|
+
@version = File.open @file, "r" do |file|
|
37
|
+
version = nil
|
38
|
+
file.each_line do |line|
|
39
|
+
match = line.match PATTERN
|
40
|
+
if match
|
41
|
+
version = match[2]
|
42
|
+
break
|
43
|
+
end
|
44
|
+
end
|
45
|
+
version
|
46
|
+
end
|
47
|
+
fail "Can't determine version number" unless @version
|
48
|
+
@new_version = new_version || @version
|
49
|
+
end
|
50
|
+
|
51
|
+
def changed?
|
52
|
+
@version != @new_version
|
53
|
+
end
|
54
|
+
|
55
|
+
def number
|
56
|
+
@version
|
57
|
+
end
|
58
|
+
|
59
|
+
def next
|
60
|
+
@new_version
|
61
|
+
end
|
62
|
+
|
63
|
+
def update
|
64
|
+
puts "Updating to version #{@new_version}"
|
65
|
+
copy = "#{@file}.new"
|
66
|
+
open @file, "r" do |input|
|
67
|
+
open copy, "w" do |output|
|
68
|
+
input.each_line do |line|
|
69
|
+
match = line.match PATTERN
|
70
|
+
if match
|
71
|
+
output.puts "#{match[1]}VERSION = '#{@new_version}'"
|
72
|
+
else
|
73
|
+
output.puts line
|
74
|
+
end
|
77
75
|
end
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
end
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
76
|
+
end
|
77
|
+
end
|
78
|
+
mv copy, @file
|
79
|
+
@version = @new_version
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
83
|
+
version = Version.new "lib/uuid.rb", ENV["version"]
|
84
|
+
|
85
|
+
|
86
|
+
# Create the GEM package.
|
87
|
+
gem_spec = Gem::Specification.new do |spec|
|
88
|
+
spec.name = "uuid"
|
89
|
+
spec.version = version.next
|
90
|
+
spec.summary = "UUID generator"
|
91
|
+
spec.description = <<-EOF
|
92
|
+
UUID generator for producing universally unique identifiers based
|
93
|
+
on RFC 4122 (http://www.ietf.org/rfc/rfc4122.txt).
|
94
|
+
EOF
|
95
|
+
spec.author = "Assaf Arkin"
|
96
|
+
spec.email = "assaf@labnotes.org"
|
97
|
+
spec.homepage = "http://trac.labnotes.org/cgi-bin/trac.cgi/wiki/Ruby/UuidGenerator"
|
98
|
+
spec.files = FileList["{bin,test,lib,docs}/**/*", "README", "MIT-LICENSE", "Rakefile", "changelog.txt"].to_a
|
99
|
+
spec.require_path = "lib"
|
100
|
+
spec.autorequire = "uuid.rb"
|
101
|
+
spec.bindir = "bin"
|
102
|
+
spec.executables = ["uuid-setup"]
|
103
|
+
spec.default_executable = "uuid-setup"
|
104
|
+
spec.has_rdoc = true
|
105
|
+
spec.rdoc_options << "--main" << "README" << "--title" << "UUID generator" << "--line-numbers"
|
106
|
+
spec.extra_rdoc_files = ["README"]
|
107
|
+
spec.rubyforge_project = "reliable-msg"
|
108
|
+
end
|
109
|
+
|
110
|
+
gem = Rake::GemPackageTask.new(gem_spec) do |pkg|
|
111
|
+
pkg.need_tar = true
|
112
|
+
pkg.need_zip = true
|
113
|
+
end
|
114
|
+
|
115
|
+
|
117
116
|
desc "Look for TODO and FIXME tags in the code"
|
118
117
|
task :todo do
|
119
118
|
FileList["**/*.rb"].egrep /#.*(FIXME|TODO|TBD)/
|
120
119
|
end
|
121
|
-
|
122
|
-
|
120
|
+
|
121
|
+
|
123
122
|
# --------------------------------------------------------------------
|
124
123
|
# Creating a release
|
125
124
|
|
126
125
|
desc "Make a new release"
|
127
126
|
task :release => [:test, :prerelease, :clobber, :update_version, :package] do
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
end
|
135
|
-
|
136
|
-
task :prerelease do
|
137
|
-
if !version.changed? && ENV["reuse"] != version.number
|
138
|
-
fail "Current version is #{version.number}, must specify reuse=ver to reuse existing version"
|
139
|
-
end
|
127
|
+
puts
|
128
|
+
puts "**************************************************************"
|
129
|
+
puts "* Release #{version.number} Complete."
|
130
|
+
puts "* Packages ready to upload."
|
131
|
+
puts "**************************************************************"
|
132
|
+
puts
|
140
133
|
end
|
141
|
-
|
142
|
-
task :
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
134
|
+
|
135
|
+
task :prerelease do
|
136
|
+
if !version.changed? && ENV["reuse"] != version.number
|
137
|
+
fail "Current version is #{version.number}, must specify reuse=ver to reuse existing version"
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
task :update_version => [:prerelease] do
|
142
|
+
if !version.changed?
|
143
|
+
puts "No version change ... skipping version update"
|
144
|
+
else
|
145
|
+
version.update
|
146
|
+
end
|
148
147
|
end
|
149
|
-
|
148
|
+
|