stickler 2.0.0a → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.bnsignore +14 -0
- data/.gitignore +17 -0
- data/HISTORY.asciidoc +20 -0
- data/README.asciidoc +126 -0
- data/Rakefile +22 -3
- data/bin/stickler +50 -0
- data/bin/stickler-passenger-config +112 -0
- data/bin/stickler-server +109 -0
- data/examples/config.ru +6 -3
- data/examples/gemcutter_repo.ru +2 -0
- data/examples/index_repo.ru +2 -0
- data/examples/local_repo.ru +6 -3
- data/examples/mirror_repo.ru +2 -0
- data/examples/not_found.ru +2 -0
- data/lib/stickler.rb +12 -0
- data/lib/stickler/client.rb +47 -0
- data/lib/stickler/client/config.rb +35 -0
- data/lib/stickler/client/config_file.rb +58 -0
- data/lib/stickler/client/mirror.rb +61 -0
- data/lib/stickler/client/push.rb +50 -0
- data/lib/stickler/client/yank.rb +51 -0
- data/lib/stickler/logable.rb +35 -0
- data/lib/stickler/middleware/gemcutter.rb +5 -0
- data/lib/stickler/middleware/helpers.rb +32 -0
- data/lib/stickler/middleware/index.rb +30 -4
- data/lib/stickler/middleware/mirror.rb +8 -3
- data/lib/stickler/middleware/not_found.rb +4 -2
- data/lib/stickler/paths.rb +53 -0
- data/lib/stickler/repository/local.rb +12 -12
- data/lib/stickler/repository/mirror.rb +13 -6
- data/lib/stickler/repository/null.rb +1 -0
- data/lib/stickler/repository/remote.rb +10 -4
- data/lib/stickler/repository/rubygems_authenticator.rb +32 -0
- data/lib/stickler/server.rb +34 -0
- data/lib/stickler/server/public/css/blueprint/LICENSE +22 -0
- data/lib/stickler/server/public/css/blueprint/ie.css +35 -0
- data/lib/stickler/server/public/css/blueprint/screen.css +266 -0
- data/lib/stickler/server/public/css/style.css +19 -0
- data/lib/stickler/server/public/images/apple-touch-icon.png +0 -0
- data/lib/stickler/server/public/images/favicon.ico +0 -0
- data/lib/stickler/server/public/js/modernizr-1.5.min.js +28 -0
- data/lib/stickler/server/views/index.erb +35 -0
- data/lib/stickler/server/views/layout.erb +42 -0
- data/lib/stickler/spec_lite.rb +16 -6
- data/lib/stickler/version.rb +1 -1
- data/man/asciidoc.conf +25 -0
- data/man/stickler-passenger-config.asciidoc +74 -0
- data/man/stickler-server.asciidoc +87 -0
- data/man/stickler.asciidoc +148 -0
- data/spec/middleware/common_gem_server_helpers.rb +4 -2
- data/spec/middleware/index_spec.rb +3 -3
- data/spec/middleware/legacy_gem_server_behavior.rb +0 -2
- data/spec/middleware/local_spec.rb +3 -3
- data/spec/middleware/modern_gem_server_behavior.rb +2 -0
- data/spec/paths_spec.rb +13 -0
- data/spec/spec_lite_spec.rb +14 -0
- data/tasks/man.rake +19 -0
- metadata +183 -56
- data/HISTORY.rdoc +0 -12
- data/README.rdoc +0 -88
- data/lib/stickler/web.rb +0 -19
- data/stickler.gemspec +0 -60
- data/views/index.erb +0 -19
- data/views/layout.erb +0 -39
data/tasks/man.rake
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
namespace :man do
|
2
|
+
|
3
|
+
rule '.1' => '.asciidoc' do |t|
|
4
|
+
sh "a2x --format manpage #{t.source}"
|
5
|
+
end
|
6
|
+
|
7
|
+
src = FileList["man/*.asciidoc"]
|
8
|
+
man = src.collect{ |f| f.ext( "1" ) }
|
9
|
+
|
10
|
+
desc "Create man pages"
|
11
|
+
task :create => man
|
12
|
+
|
13
|
+
task :clobber_man do
|
14
|
+
rm_f FileList["man/*.1", "man/*.html", "man/*.xml"]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
task :clobber => %w[ man:clobber_man ]
|
19
|
+
task 'gem:prereqs' => 'man:create'
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stickler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 13
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 2
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 2.0.1
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Jeremy Hinegardner
|
@@ -9,110 +15,208 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date: 2010-
|
18
|
+
date: 2010-09-19 00:00:00 -06:00
|
13
19
|
default_executable:
|
14
20
|
dependencies:
|
15
21
|
- !ruby/object:Gem::Dependency
|
16
22
|
name: sinatra
|
17
|
-
|
18
|
-
|
19
|
-
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
20
26
|
requirements:
|
21
27
|
- - ~>
|
22
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 23
|
30
|
+
segments:
|
31
|
+
- 1
|
32
|
+
- 0
|
33
|
+
- 0
|
23
34
|
version: 1.0.0
|
24
|
-
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: *id001
|
25
37
|
- !ruby/object:Gem::Dependency
|
26
38
|
name: addressable
|
27
|
-
|
28
|
-
|
29
|
-
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
30
42
|
requirements:
|
31
43
|
- - ~>
|
32
44
|
- !ruby/object:Gem::Version
|
45
|
+
hash: 15
|
46
|
+
segments:
|
47
|
+
- 2
|
48
|
+
- 1
|
49
|
+
- 2
|
33
50
|
version: 2.1.2
|
34
|
-
|
51
|
+
type: :runtime
|
52
|
+
version_requirements: *id002
|
35
53
|
- !ruby/object:Gem::Dependency
|
36
54
|
name: resourceful
|
37
|
-
|
38
|
-
|
39
|
-
|
55
|
+
prerelease: false
|
56
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
40
58
|
requirements:
|
41
59
|
- - ~>
|
42
60
|
- !ruby/object:Gem::Version
|
61
|
+
hash: 21
|
62
|
+
segments:
|
63
|
+
- 1
|
64
|
+
- 0
|
65
|
+
- 1
|
43
66
|
version: 1.0.1
|
44
|
-
|
67
|
+
type: :runtime
|
68
|
+
version_requirements: *id003
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: trollop
|
71
|
+
prerelease: false
|
72
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
hash: 83
|
78
|
+
segments:
|
79
|
+
- 1
|
80
|
+
- 16
|
81
|
+
- 2
|
82
|
+
version: 1.16.2
|
83
|
+
type: :runtime
|
84
|
+
version_requirements: *id004
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: logging
|
87
|
+
prerelease: false
|
88
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ~>
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
hash: 1
|
94
|
+
segments:
|
95
|
+
- 1
|
96
|
+
- 4
|
97
|
+
- 3
|
98
|
+
version: 1.4.3
|
99
|
+
type: :runtime
|
100
|
+
version_requirements: *id005
|
45
101
|
- !ruby/object:Gem::Dependency
|
46
102
|
name: bones
|
47
|
-
|
48
|
-
|
49
|
-
|
103
|
+
prerelease: false
|
104
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
50
106
|
requirements:
|
51
107
|
- - ~>
|
52
108
|
- !ruby/object:Gem::Version
|
109
|
+
hash: 27
|
110
|
+
segments:
|
111
|
+
- 3
|
112
|
+
- 4
|
113
|
+
- 6
|
53
114
|
version: 3.4.6
|
54
|
-
|
115
|
+
type: :development
|
116
|
+
version_requirements: *id006
|
55
117
|
- !ruby/object:Gem::Dependency
|
56
118
|
name: rack-test
|
57
|
-
|
58
|
-
|
59
|
-
|
119
|
+
prerelease: false
|
120
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
60
122
|
requirements:
|
61
123
|
- - ~>
|
62
124
|
- !ruby/object:Gem::Version
|
125
|
+
hash: 3
|
126
|
+
segments:
|
127
|
+
- 0
|
128
|
+
- 5
|
129
|
+
- 4
|
63
130
|
version: 0.5.4
|
64
|
-
|
131
|
+
type: :development
|
132
|
+
version_requirements: *id007
|
65
133
|
- !ruby/object:Gem::Dependency
|
66
134
|
name: bones-extras
|
67
|
-
|
68
|
-
|
69
|
-
|
135
|
+
prerelease: false
|
136
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
70
138
|
requirements:
|
71
139
|
- - ~>
|
72
140
|
- !ruby/object:Gem::Version
|
141
|
+
hash: 23
|
142
|
+
segments:
|
143
|
+
- 1
|
144
|
+
- 2
|
145
|
+
- 4
|
73
146
|
version: 1.2.4
|
74
|
-
|
147
|
+
type: :development
|
148
|
+
version_requirements: *id008
|
75
149
|
- !ruby/object:Gem::Dependency
|
76
150
|
name: bones
|
77
|
-
|
78
|
-
|
79
|
-
|
151
|
+
prerelease: false
|
152
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
80
154
|
requirements:
|
81
155
|
- - ">="
|
82
156
|
- !ruby/object:Gem::Version
|
157
|
+
hash: 27
|
158
|
+
segments:
|
159
|
+
- 3
|
160
|
+
- 4
|
161
|
+
- 6
|
83
162
|
version: 3.4.6
|
84
|
-
|
85
|
-
|
163
|
+
type: :development
|
164
|
+
version_requirements: *id009
|
165
|
+
description: |
|
86
166
|
Stickler is a tool to organize and maintain an internal gem repository.
|
167
|
+
Primarily, you would want to use Stickler if:
|
87
168
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
Configure stickler with the the names and versions of the gems you require for
|
94
|
-
your deployment and it will organize and setup everything that is necessary for
|
95
|
-
a standard web server to function as your internal gem distribution server.
|
96
|
-
email: jeremy@hinegardner.org
|
97
|
-
executables: []
|
169
|
+
1. You have proprietary gems that you want to have available via a gem server so
|
170
|
+
you may +gem install+ them.
|
171
|
+
2. You would like to have a local mirror of third party gems from either
|
172
|
+
http://rubygems.org or some other gem server.
|
173
|
+
3. You want both (1) and (2) in the same server.
|
98
174
|
|
175
|
+
email: jeremy@hinegardner.org
|
176
|
+
executables:
|
177
|
+
- stickler
|
178
|
+
- stickler-passenger-config
|
179
|
+
- stickler-server
|
99
180
|
extensions: []
|
100
181
|
|
101
182
|
extra_rdoc_files:
|
102
|
-
-
|
103
|
-
-
|
183
|
+
- bin/stickler
|
184
|
+
- bin/stickler-passenger-config
|
185
|
+
- bin/stickler-server
|
186
|
+
- lib/stickler/server/public/css/blueprint/LICENSE
|
187
|
+
- lib/stickler/server/public/css/blueprint/ie.css
|
188
|
+
- lib/stickler/server/public/css/blueprint/screen.css
|
189
|
+
- lib/stickler/server/public/css/style.css
|
190
|
+
- lib/stickler/server/public/images/apple-touch-icon.png
|
191
|
+
- lib/stickler/server/public/images/favicon.ico
|
192
|
+
- lib/stickler/server/public/js/modernizr-1.5.min.js
|
193
|
+
- lib/stickler/server/views/index.erb
|
194
|
+
- lib/stickler/server/views/layout.erb
|
104
195
|
files:
|
105
|
-
-
|
196
|
+
- .bnsignore
|
197
|
+
- .gitignore
|
198
|
+
- HISTORY.asciidoc
|
106
199
|
- LICENSE
|
107
|
-
- README.
|
200
|
+
- README.asciidoc
|
108
201
|
- Rakefile
|
202
|
+
- bin/stickler
|
203
|
+
- bin/stickler-passenger-config
|
204
|
+
- bin/stickler-server
|
109
205
|
- examples/config.ru
|
110
206
|
- examples/gemcutter_repo.ru
|
111
207
|
- examples/index_repo.ru
|
112
208
|
- examples/local_repo.ru
|
113
209
|
- examples/mirror_repo.ru
|
114
210
|
- examples/not_found.ru
|
211
|
+
- lib/stickler.rb
|
212
|
+
- lib/stickler/client.rb
|
213
|
+
- lib/stickler/client/config.rb
|
214
|
+
- lib/stickler/client/config_file.rb
|
215
|
+
- lib/stickler/client/mirror.rb
|
216
|
+
- lib/stickler/client/push.rb
|
217
|
+
- lib/stickler/client/yank.rb
|
115
218
|
- lib/stickler/error.rb
|
219
|
+
- lib/stickler/logable.rb
|
116
220
|
- lib/stickler/middleware.rb
|
117
221
|
- lib/stickler/middleware/compression.rb
|
118
222
|
- lib/stickler/middleware/gemcutter.rb
|
@@ -121,6 +225,7 @@ files:
|
|
121
225
|
- lib/stickler/middleware/local.rb
|
122
226
|
- lib/stickler/middleware/mirror.rb
|
123
227
|
- lib/stickler/middleware/not_found.rb
|
228
|
+
- lib/stickler/paths.rb
|
124
229
|
- lib/stickler/repository.rb
|
125
230
|
- lib/stickler/repository/api.rb
|
126
231
|
- lib/stickler/repository/index.rb
|
@@ -128,9 +233,26 @@ files:
|
|
128
233
|
- lib/stickler/repository/mirror.rb
|
129
234
|
- lib/stickler/repository/null.rb
|
130
235
|
- lib/stickler/repository/remote.rb
|
236
|
+
- lib/stickler/repository/rubygems_authenticator.rb
|
237
|
+
- lib/stickler/server.rb
|
238
|
+
- lib/stickler/server/public/css/blueprint/LICENSE
|
239
|
+
- lib/stickler/server/public/css/blueprint/ie.css
|
240
|
+
- lib/stickler/server/public/css/blueprint/screen.css
|
241
|
+
- lib/stickler/server/public/css/style.css
|
242
|
+
- lib/stickler/server/public/images/apple-touch-icon.png
|
243
|
+
- lib/stickler/server/public/images/favicon.ico
|
244
|
+
- lib/stickler/server/public/js/modernizr-1.5.min.js
|
245
|
+
- lib/stickler/server/views/index.erb
|
246
|
+
- lib/stickler/server/views/layout.erb
|
131
247
|
- lib/stickler/spec_lite.rb
|
132
248
|
- lib/stickler/version.rb
|
133
|
-
-
|
249
|
+
- man/asciidoc.conf
|
250
|
+
- man/stickler-passenger-config.1
|
251
|
+
- man/stickler-passenger-config.asciidoc
|
252
|
+
- man/stickler-server.1
|
253
|
+
- man/stickler-server.asciidoc
|
254
|
+
- man/stickler.1
|
255
|
+
- man/stickler.asciidoc
|
134
256
|
- spec/data/gems/bar-1.0.0.gem
|
135
257
|
- spec/data/gems/foo-1.0.0.gem
|
136
258
|
- spec/data/specifications/bar-1.0.0.gemspec
|
@@ -141,6 +263,7 @@ files:
|
|
141
263
|
- spec/middleware/local_spec.rb
|
142
264
|
- spec/middleware/modern_gem_server_behavior.rb
|
143
265
|
- spec/middleware/not_found_spec.rb
|
266
|
+
- spec/paths_spec.rb
|
144
267
|
- spec/repository/api_behavior.rb
|
145
268
|
- spec/repository/api_spec.rb
|
146
269
|
- spec/repository/index_spec.rb
|
@@ -150,9 +273,7 @@ files:
|
|
150
273
|
- spec/spec.opts
|
151
274
|
- spec/spec_helper.rb
|
152
275
|
- spec/spec_lite_spec.rb
|
153
|
-
-
|
154
|
-
- views/index.erb
|
155
|
-
- views/layout.erb
|
276
|
+
- tasks/man.rake
|
156
277
|
has_rdoc: true
|
157
278
|
homepage: http://rubygems.org/gems/stickler
|
158
279
|
licenses: []
|
@@ -160,27 +281,33 @@ licenses: []
|
|
160
281
|
post_install_message:
|
161
282
|
rdoc_options:
|
162
283
|
- --main
|
163
|
-
- README.
|
284
|
+
- README.asciidoc
|
164
285
|
require_paths:
|
165
286
|
- lib
|
166
287
|
required_ruby_version: !ruby/object:Gem::Requirement
|
288
|
+
none: false
|
167
289
|
requirements:
|
168
290
|
- - ">="
|
169
291
|
- !ruby/object:Gem::Version
|
292
|
+
hash: 3
|
293
|
+
segments:
|
294
|
+
- 0
|
170
295
|
version: "0"
|
171
|
-
version:
|
172
296
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
297
|
+
none: false
|
173
298
|
requirements:
|
174
|
-
- - "
|
299
|
+
- - ">="
|
175
300
|
- !ruby/object:Gem::Version
|
176
|
-
|
177
|
-
|
301
|
+
hash: 3
|
302
|
+
segments:
|
303
|
+
- 0
|
304
|
+
version: "0"
|
178
305
|
requirements: []
|
179
306
|
|
180
307
|
rubyforge_project: copiousfreetime
|
181
|
-
rubygems_version: 1.3.
|
308
|
+
rubygems_version: 1.3.7
|
182
309
|
signing_key:
|
183
310
|
specification_version: 3
|
184
|
-
summary: Stickler is a tool to organize and maintain an internal gem repository
|
311
|
+
summary: Stickler is a tool to organize and maintain an internal gem repository.
|
185
312
|
test_files: []
|
186
313
|
|
data/HISTORY.rdoc
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
= stickler Changelog
|
2
|
-
== Version 0.1.2
|
3
|
-
|
4
|
-
* fix compatibility with gems 1.3.1
|
5
|
-
|
6
|
-
== Version 0.1.1
|
7
|
-
* 1 minor bugfix
|
8
|
-
* remove unnecessary require 'progressbar'
|
9
|
-
|
10
|
-
== Version 0.1.0
|
11
|
-
* {Managing a Gem Repository with Stickler}[http://copiousfreetime.org/articles/2008/10/09/managing-a-gem-repository-with-stickler.html]
|
12
|
-
* Initial public release
|
data/README.rdoc
DELETED
@@ -1,88 +0,0 @@
|
|
1
|
-
= Stickler
|
2
|
-
|
3
|
-
* Homepage[http://copiousfreetime.rubyforge.org/stickler/]
|
4
|
-
* {Rubyforge Project}[http://rubyforge.org/projects/copiousfreetime/]
|
5
|
-
* email jeremy at hinegardner dot org
|
6
|
-
* {Managing a Gem Repository with Stickler}[http://copiousfreetime.org/articles/2008/10/09/managing-a-gem-repository-with-stickler.html]
|
7
|
-
|
8
|
-
== DESCRIPTION
|
9
|
-
|
10
|
-
Stickler is a tool to organize and maintain an internal gem repository.
|
11
|
-
|
12
|
-
At times it is useful to have complete control over the availability of the gems
|
13
|
-
for you testing, staging and production environments. In these cases you
|
14
|
-
probably do not want to accidentally type 'gem update' and get a new untested
|
15
|
-
version of a gem installed on your machines. This is where Stickler helps.
|
16
|
-
|
17
|
-
Configure stickler with the the names and versions of the gems you require for
|
18
|
-
your deployment and it will organize and setup everything that is necessary for
|
19
|
-
a standard web server to function as your internal gem distribution server.
|
20
|
-
|
21
|
-
|
22
|
-
== INSTALLATION
|
23
|
-
|
24
|
-
Install as a gem:
|
25
|
-
|
26
|
-
gem install stickler
|
27
|
-
|
28
|
-
Or Get it from RubyForge[http://rubyforge.org/projects/copiousfreetime/]
|
29
|
-
or github[http://github.com/copiousfreetime/stickler/tree/master]
|
30
|
-
|
31
|
-
== SYNOPSIS
|
32
|
-
|
33
|
-
Using stickler is fairly simple. First install it, then create a new stickler
|
34
|
-
repository with the setup command:
|
35
|
-
|
36
|
-
stickler setup /var/stickler
|
37
|
-
|
38
|
-
This will create a stickler repository in /var/stickler, assuming you have the
|
39
|
-
correct permissions to create that directory. Now you need to populate it with
|
40
|
-
some gems. You can add and remove both gems and sources. The best way to do
|
41
|
-
this is to change into stickler repository and run other commands.
|
42
|
-
|
43
|
-
cd /var/stickler
|
44
|
-
stickler add gem ramaze
|
45
|
-
|
46
|
-
This will prompt you for the gem version requirement for 'ramaze' and then
|
47
|
-
download ramaze and everything it depends upon into the stickler repository.
|
48
|
-
|
49
|
-
You can also add your own upstream gem repository to stickler. This enables you
|
50
|
-
to merge multiple upstream repositories into a single repository.
|
51
|
-
|
52
|
-
stickler add source http://gems.example.com/
|
53
|
-
|
54
|
-
Now you can add gems to your stickler repository that are found in the default
|
55
|
-
upstream repository (rubygems) and your custom upstream repositories. It will
|
56
|
-
even resolve dependencies between them.
|
57
|
-
|
58
|
-
When you are ready to distribute the gems found in your stickler repository,
|
59
|
-
edit the 'stickler.yml' file found in the root of your repository and set the
|
60
|
-
'downstream_source' configuration variable. This is the location that your
|
61
|
-
installed rubygems clients will contact to download gems. Most likely something
|
62
|
-
like 'http://gems.example.com' or whatever your company / organization name is.
|
63
|
-
|
64
|
-
Then run the index command to generate the distributable gem repository.
|
65
|
-
|
66
|
-
stickler generate index
|
67
|
-
|
68
|
-
This generates a directory structure under the 'dist' directory that you can
|
69
|
-
rsync to a web server or otherwise push to some location for your managed
|
70
|
-
machines to contact for gems.
|
71
|
-
|
72
|
-
If you want to setup a system gem source configuration, use the 'generate
|
73
|
-
sysconfig' command to generate the text file you can put on your systems so that
|
74
|
-
they contact the 'downstream_source' as the default gem server. The command
|
75
|
-
informs you of where to install the file.
|
76
|
-
|
77
|
-
stickler generate sysconfig
|
78
|
-
|
79
|
-
== CREDITS
|
80
|
-
|
81
|
-
* {The Rubygems Team}[http://rubyforge.org/projects/rubygems/]
|
82
|
-
|
83
|
-
== LICENSE
|
84
|
-
|
85
|
-
Copyright (c) 2008 Jeremy Hinegardner
|
86
|
-
|
87
|
-
All rights reserved. Licensed under the same terms as Ruby. No warranty is
|
88
|
-
provided. See LICENSE and COPYING for details.
|