ocra 1.1.5.pre3 → 1.2.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +5 -1
- data/README.txt +18 -1
- data/bin/ocra +100 -72
- data/lib/ocra.rb +1 -1
- data/share/ocra/edicon.exe +0 -0
- data/share/ocra/stub.exe +0 -0
- data/share/ocra/stubw.exe +0 -0
- data/test/test_ocra.rb +42 -5
- metadata +5 -10
data/History.txt
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
=== 1.
|
1
|
+
=== 1.2.0
|
2
2
|
|
3
3
|
* Ignore console events (Ctrl-C, Ctrl-Break). Ruby process handles
|
4
4
|
them anyway and exist, allowing the stub to clean up temporary
|
@@ -27,6 +27,10 @@
|
|
27
27
|
directory layout would not be maintained, e.g. when running "ocra
|
28
28
|
bin/script share/data.dat".
|
29
29
|
|
30
|
+
* Added support for passing arguments to script. Specify argument to
|
31
|
+
your script after a "--" marker. Arguments will be passed both at
|
32
|
+
compile time and run time. (#27815)
|
33
|
+
|
30
34
|
=== 1.1.4
|
31
35
|
|
32
36
|
* The tempdir marker is now pretty-printed as "<tempdir>" in the
|
data/README.txt
CHANGED
@@ -78,7 +78,11 @@ in the forums there aswell.
|
|
78
78
|
== REQUIREMENTS:
|
79
79
|
|
80
80
|
* Windows
|
81
|
-
|
81
|
+
|
82
|
+
* Working Ruby installation, tested with:
|
83
|
+
* One-Click Installer (187_27_rc2)
|
84
|
+
* RubyInstaller (1.8.7p299, 1.9.1p249, 1.9.2p0)
|
85
|
+
|
82
86
|
* MinGW Installation (when working with the source code only)
|
83
87
|
|
84
88
|
== INSTALL:
|
@@ -220,6 +224,19 @@ of files, for example
|
|
220
224
|
|
221
225
|
ocra script.rb assets/**/*.png
|
222
226
|
|
227
|
+
=== Command Line Arguments
|
228
|
+
|
229
|
+
To pass command line argument to your script (both while building and
|
230
|
+
when run from the resulting executable), specify them after a "--"
|
231
|
+
marker. For example:
|
232
|
+
|
233
|
+
ocra script.rb -- --some-options=value
|
234
|
+
|
235
|
+
This will pass "--some-options=value" to the script when build and
|
236
|
+
when running the executable. Any extra argument specified by the user
|
237
|
+
when invoking the executable will be appended after the compile-time
|
238
|
+
arguments.
|
239
|
+
|
223
240
|
=== Window/Console
|
224
241
|
|
225
242
|
By default, OCRA builds console application from .rb-files and
|
data/bin/ocra
CHANGED
@@ -11,7 +11,7 @@ module Ocra
|
|
11
11
|
OP_SETENV = 5
|
12
12
|
OP_POST_CREATE_PROCESS = 6
|
13
13
|
|
14
|
-
VERSION = "1.
|
14
|
+
VERSION = "1.2.0.rc1"
|
15
15
|
|
16
16
|
IGNORE_MODULES = /^enumerator.so$/
|
17
17
|
|
@@ -43,7 +43,8 @@ module Ocra
|
|
43
43
|
:quiet => false,
|
44
44
|
:autodll => true,
|
45
45
|
:show_warnings => true,
|
46
|
-
:gem_filter => true
|
46
|
+
:gem_filter => true,
|
47
|
+
:arg => []
|
47
48
|
}
|
48
49
|
|
49
50
|
@options.each_key { |opt| eval("def self.#{opt}; @options[:#{opt}]; end") }
|
@@ -143,7 +144,10 @@ EOF
|
|
143
144
|
@options[:show_warnings] = false
|
144
145
|
when /\A--no-gem-filter\z/
|
145
146
|
@options[:gem_filter] = false
|
146
|
-
when /\A
|
147
|
+
when /\A--\z/
|
148
|
+
@options[:arg] = ARGV.dup
|
149
|
+
ARGV.clear
|
150
|
+
when /\A--help\z/, /\A--./
|
147
151
|
puts usage
|
148
152
|
exit
|
149
153
|
else
|
@@ -195,13 +199,13 @@ EOF
|
|
195
199
|
# (directory or file). Return the absolute path to 'tgt' if it can't
|
196
200
|
# be reached from 'src'.
|
197
201
|
def Ocra.relative_path(src, tgt)
|
198
|
-
a = src.split('/')
|
199
|
-
b = tgt.split('/')
|
202
|
+
a = posixpath(src).split('/')
|
203
|
+
b = posixpath(tgt).split('/')
|
200
204
|
while a.first && a.first.downcase == b.first.downcase
|
201
205
|
a.shift
|
202
206
|
b.shift
|
203
207
|
end
|
204
|
-
return tgt if b.first
|
208
|
+
return tgt if abspath?(b.first)
|
205
209
|
a.size.times { b.unshift '..' }
|
206
210
|
return b.join('/')
|
207
211
|
end
|
@@ -214,57 +218,38 @@ EOF
|
|
214
218
|
src_normalized =~ /^#{Regexp.escape tgt_normalized}[\/\\]/i
|
215
219
|
end
|
216
220
|
|
221
|
+
# Returns true if 'path' is absolute, false otherwise.
|
222
|
+
def Ocra.abspath?(path)
|
223
|
+
path =~ /\A[A-Z]:/i
|
224
|
+
end
|
225
|
+
|
217
226
|
# Guess the load path (from 'paths') that was used to load
|
218
227
|
# 'path'. This is primarily relevant on Ruby 1.8 which stores
|
219
228
|
# "unqualified" paths in $LOADED_FEATURES.
|
220
229
|
def Ocra.find_load_path(paths, path)
|
221
|
-
if path
|
230
|
+
if abspath?(path)
|
231
|
+
# Find the shortest path in 'paths' that contain 'path'
|
222
232
|
rps = paths.map {|p| relative_path(File.expand_path(p), path) }
|
223
233
|
rps.zip(paths).sort_by {|x| x[0].size }.first[1]
|
224
234
|
else
|
235
|
+
# Select the paths that contain 'path' and select the shortest
|
225
236
|
candidates = paths.select { |p| File.exist?(File.expand_path(path, p)) }
|
226
237
|
candidates.sort_by {|p| p.size}.last
|
227
238
|
end
|
228
239
|
end
|
229
|
-
|
230
|
-
def Ocra.build_exe
|
231
|
-
@added_load_paths = $LOAD_PATH - @load_path_before
|
232
240
|
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
features = $LOADED_FEATURES.dup
|
241
|
-
|
242
|
-
# Find gemspecs to include
|
243
|
-
if defined?(Gem)
|
244
|
-
gemspecs = Gem.loaded_specs.map { |name,info| info.loaded_from }
|
245
|
-
else
|
246
|
-
gemspecs = []
|
247
|
-
end
|
248
|
-
|
249
|
-
require 'rbconfig'
|
250
|
-
exec_prefix = RbConfig::CONFIG['exec_prefix']
|
251
|
-
src_prefix = Dir.pwd
|
252
|
-
sitelibdir = RbConfig::CONFIG['sitelibdir']
|
253
|
-
bindir = RbConfig::CONFIG['bindir']
|
254
|
-
libruby_so = RbConfig::CONFIG['LIBRUBY_SO']
|
255
|
-
|
256
|
-
# Find the root of all files specified on the command line and use
|
257
|
-
# it as the "src" of the output. Adjust 'Ocra.files' to be
|
258
|
-
# relative to the resulting root.
|
259
|
-
files = Ocra.files.map { |file| Dir[Ocra.posixpath(file)] }.flatten
|
260
|
-
files = files.map { |file| File.expand_path(file) }
|
261
|
-
src_prefix = files.inject(File.dirname(files[0])) do |srcroot, path|
|
262
|
-
if subpath?(path, exec_prefix)
|
241
|
+
# Find the root of all files specified on the command line and use
|
242
|
+
# it as the "src" of the output.
|
243
|
+
def Ocra.find_src_root(files)
|
244
|
+
src_files = files.map { |file| Dir[posixpath(file)] }.flatten
|
245
|
+
src_files = src_files.map { |file| File.expand_path(file) }
|
246
|
+
src_prefix = src_files.inject(File.dirname(src_files[0])) do |srcroot, path|
|
247
|
+
if subpath?(path, @ruby_exec_prefix)
|
263
248
|
srcroot
|
264
249
|
else
|
265
250
|
loop do
|
266
251
|
relpath = relative_path(srcroot, path)
|
267
|
-
if relpath
|
252
|
+
if abspath?(relpath)
|
268
253
|
puts "ERROR: No common directory contains all specified files"
|
269
254
|
end
|
270
255
|
if relpath =~ /^\.\.\//
|
@@ -276,20 +261,20 @@ EOF
|
|
276
261
|
srcroot
|
277
262
|
end
|
278
263
|
end
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
instsitelibdir = relative_path(exec_prefix, sitelibdir)
|
283
|
-
|
284
|
-
load_path = []
|
264
|
+
src_files = src_files.map { |file| relative_path(src_prefix, file) }
|
265
|
+
return src_prefix, src_files
|
266
|
+
end
|
285
267
|
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
268
|
+
# Searches for features that are loaded from gems, then produces a
|
269
|
+
# list of files included in those gems' manifests. Also returns a
|
270
|
+
# list of original features that are caused gems to be
|
271
|
+
# included. Ruby 1.8 provides Gem.loaded_specs to detect gems, but
|
272
|
+
# this is empty with Ruby 1.9. So instead, we look for any loaded
|
273
|
+
# file from a gem path.
|
274
|
+
def Ocra.find_gem_files(features)
|
275
|
+
features_from_gems = []
|
290
276
|
if defined?(Gem)
|
291
277
|
gems = []
|
292
|
-
features_from_gems = []
|
293
278
|
features.each do |filename|
|
294
279
|
if filename !~ /^[a-z]:/i
|
295
280
|
filename = find_load_path($:, filename)
|
@@ -309,7 +294,7 @@ EOF
|
|
309
294
|
gem_files = []
|
310
295
|
gems.each do |gempath, fullgemname|
|
311
296
|
gemspecpath = File.join(gempath, "specifications", fullgemname + ".gemspec")
|
312
|
-
gemspecs << gemspecpath
|
297
|
+
@gemspecs << gemspecpath
|
313
298
|
spec = Gem::Specification.load(gemspecpath)
|
314
299
|
|
315
300
|
# Get list of files
|
@@ -328,21 +313,61 @@ EOF
|
|
328
313
|
else
|
329
314
|
gem_files = []
|
330
315
|
end
|
316
|
+
return gem_files, features_from_gems
|
317
|
+
end
|
318
|
+
|
319
|
+
def Ocra.build_exe
|
320
|
+
@added_load_paths = $LOAD_PATH - @load_path_before
|
321
|
+
|
322
|
+
restore_environment
|
331
323
|
|
332
|
-
#
|
324
|
+
# Attempt to autoload libraries before doing anything else.
|
325
|
+
attempt_load_autoload if Ocra.load_autoload
|
326
|
+
|
327
|
+
# Store the currently loaded files (before we require rbconfig for
|
328
|
+
# our own use).
|
329
|
+
features = $LOADED_FEATURES.dup
|
330
|
+
|
331
|
+
# Find gemspecs to include
|
332
|
+
if defined?(Gem)
|
333
|
+
@gemspecs = Gem.loaded_specs.map { |name,info| info.loaded_from }
|
334
|
+
else
|
335
|
+
@gemspecs = []
|
336
|
+
end
|
337
|
+
|
338
|
+
require 'rbconfig'
|
339
|
+
@ruby_exec_prefix = RbConfig::CONFIG['exec_prefix']
|
340
|
+
src_prefix = Dir.pwd
|
341
|
+
sitelibdir = RbConfig::CONFIG['sitelibdir']
|
342
|
+
bindir = RbConfig::CONFIG['bindir']
|
343
|
+
libruby_so = RbConfig::CONFIG['LIBRUBY_SO']
|
344
|
+
instsitelibdir = relative_path(@ruby_exec_prefix, sitelibdir)
|
345
|
+
|
346
|
+
load_path = []
|
347
|
+
|
348
|
+
# Find the source root and adjust paths
|
349
|
+
src_prefix, src_files = find_src_root(Ocra.files)
|
350
|
+
Ocra.files.replace(src_files)
|
351
|
+
|
352
|
+
# Find gems files and remove them from features
|
353
|
+
gem_files, features_from_gems = find_gem_files(features)
|
354
|
+
features -= features_from_gems
|
355
|
+
|
356
|
+
# Find features and decide where to put them in the temporary
|
357
|
+
# directory layout.
|
333
358
|
libs = []
|
334
359
|
features.each do |filename|
|
335
360
|
path = find_load_path($:, filename)
|
336
361
|
if path
|
337
|
-
if filename
|
362
|
+
if abspath?(filename)
|
338
363
|
filename = relative_path(File.expand_path(path), filename)
|
339
364
|
end
|
340
365
|
if filename =~ /^\.\.\//
|
341
366
|
puts "=== WARNING: Detected a relative require (#{filename}). This is not recommended." if Ocra.show_warnings
|
342
367
|
end
|
343
368
|
fullpath = File.expand_path(filename, path)
|
344
|
-
if subpath?(fullpath,
|
345
|
-
libs << [ fullpath, relative_path(
|
369
|
+
if subpath?(fullpath, @ruby_exec_prefix)
|
370
|
+
libs << [ fullpath, relative_path(@ruby_exec_prefix, fullpath) ]
|
346
371
|
elsif subpath?(fullpath, src_prefix)
|
347
372
|
targetpath = File.join("src", relative_path(src_prefix, fullpath))
|
348
373
|
libs << [ fullpath, targetpath ]
|
@@ -360,10 +385,11 @@ EOF
|
|
360
385
|
end
|
361
386
|
end
|
362
387
|
|
363
|
-
#
|
388
|
+
# Decide where to put gem files, either the system gem folder, or
|
389
|
+
# GEMHOME.
|
364
390
|
gem_files.each do |gemfile|
|
365
|
-
if subpath?(gemfile,
|
366
|
-
libs << [ gemfile, relative_path(
|
391
|
+
if subpath?(gemfile, @ruby_exec_prefix)
|
392
|
+
libs << [ gemfile, relative_path(@ruby_exec_prefix, gemfile) ]
|
367
393
|
elsif defined?(Gem) and gemhome = Gem.path.find { |pth| subpath?(gemfile, pth) }
|
368
394
|
targetpath = File.join("gemhome", relative_path(gemhome, fullpath))
|
369
395
|
libs << [ gemfile, targetpath ]
|
@@ -382,11 +408,11 @@ EOF
|
|
382
408
|
puts "=== Building #{executable}" unless Ocra.quiet
|
383
409
|
OcraBuilder.new(executable, windowed) do |sb|
|
384
410
|
# Add explicitly mentioned files
|
385
|
-
files.each do |file|
|
411
|
+
Ocra.files.each do |file|
|
386
412
|
file = File.join(src_prefix, file)
|
387
413
|
|
388
|
-
if subpath?(file,
|
389
|
-
target = relative_path(
|
414
|
+
if subpath?(file, @ruby_exec_prefix)
|
415
|
+
target = relative_path(@ruby_exec_prefix, file)
|
390
416
|
elsif subpath?(file, src_prefix)
|
391
417
|
target = File.join('src', relative_path(src_prefix, file))
|
392
418
|
else
|
@@ -413,23 +439,23 @@ EOF
|
|
413
439
|
|
414
440
|
# Add detected DLLs
|
415
441
|
dlls.each do |dll|
|
416
|
-
if subpath?(dll,
|
417
|
-
target = relative_path(
|
442
|
+
if subpath?(dll, @ruby_exec_prefix)
|
443
|
+
target = relative_path(@ruby_exec_prefix, dll)
|
418
444
|
else
|
419
445
|
target = File.join('bin', File.basename(dll))
|
420
446
|
end
|
421
447
|
sb.createfile(dll, target)
|
422
448
|
end
|
423
449
|
|
424
|
-
# Add extra DLLs
|
450
|
+
# Add extra DLLs specified on the command line
|
425
451
|
Ocra.extra_dlls.each do |dll|
|
426
452
|
sb.createfile(File.join(bindir, dll), File.join("bin", dll))
|
427
453
|
end
|
428
454
|
|
429
455
|
# Add gemspec files
|
430
|
-
gemspecs.each do |gemspec|
|
431
|
-
if subpath?(gemspec,
|
432
|
-
path = relative_path(
|
456
|
+
@gemspecs.each do |gemspec|
|
457
|
+
if subpath?(gemspec, @ruby_exec_prefix)
|
458
|
+
path = relative_path(@ruby_exec_prefix, gemspec)
|
433
459
|
sb.createfile(gemspec, path)
|
434
460
|
elsif defined?(Gem) and gemhome = Gem.path.find { |pth| subpath?(gemspec, pth) }
|
435
461
|
path = File.join('gemhome', relative_path(gemhome, gemspec))
|
@@ -439,7 +465,7 @@ EOF
|
|
439
465
|
end
|
440
466
|
end
|
441
467
|
|
442
|
-
# Add loaded libraries
|
468
|
+
# Add loaded libraries (features, gems)
|
443
469
|
libs.each do |path, target|
|
444
470
|
sb.createfile(path, target)
|
445
471
|
end
|
@@ -450,7 +476,9 @@ EOF
|
|
450
476
|
sb.setenv('GEM_PATH', "#{TEMPDIR_MARKER}\\gemhome")
|
451
477
|
|
452
478
|
# Launch the script
|
453
|
-
|
479
|
+
extra_arg = Ocra.arg.map { |a| ' "' + a.gsub(/\"/,'\\"') + '"' }.join
|
480
|
+
sb.postcreateprocess(TEMPDIR_MARKER + "\\bin\\" + rubyexe,
|
481
|
+
"#{rubyexe} \"\xff\\src\\" + Ocra.dospath(Ocra.files[0]) + "\"#{extra_arg}")
|
454
482
|
|
455
483
|
puts "=== Compressing" unless Ocra.quiet or not Ocra.lzma_mode
|
456
484
|
end
|
@@ -597,7 +625,7 @@ end # module Ocra
|
|
597
625
|
|
598
626
|
if File.basename(__FILE__) == File.basename($0)
|
599
627
|
Ocra.init(ARGV)
|
600
|
-
ARGV.
|
628
|
+
ARGV.replace(Ocra.arg)
|
601
629
|
|
602
630
|
if !File.exist?(Ocra.files[0])
|
603
631
|
puts "ERROR: #{Ocra.files[0]} was not found!"
|
data/lib/ocra.rb
CHANGED
data/share/ocra/edicon.exe
CHANGED
Binary file
|
data/share/ocra/stub.exe
CHANGED
Binary file
|
data/share/ocra/stubw.exe
CHANGED
Binary file
|
data/test/test_ocra.rb
CHANGED
@@ -4,9 +4,6 @@ require "fileutils"
|
|
4
4
|
require "rbconfig"
|
5
5
|
|
6
6
|
require 'rbconfig'
|
7
|
-
puts "Version: #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}"
|
8
|
-
puts "Architecture: #{RbConfig::CONFIG['arch']}"
|
9
|
-
puts "Host: #{RbConfig::CONFIG['host']}"
|
10
7
|
|
11
8
|
begin
|
12
9
|
require "rubygems"
|
@@ -146,17 +143,57 @@ class TestOcra < Test::Unit::TestCase
|
|
146
143
|
end
|
147
144
|
|
148
145
|
# Test that arguments are passed correctly to scripts.
|
149
|
-
def
|
146
|
+
def test_arguments1
|
150
147
|
with_fixture 'arguments' do
|
151
148
|
assert system("ruby", ocra, "arguments.rb", *DefaultArgs)
|
152
149
|
assert File.exist?("arguments.exe")
|
153
150
|
pristine_env "arguments.exe" do
|
154
|
-
system("arguments.exe foo \"bar baz\"")
|
151
|
+
system("arguments.exe foo \"bar baz \\\"quote\\\"\"")
|
155
152
|
assert_equal 5, $?.exitstatus
|
156
153
|
end
|
157
154
|
end
|
158
155
|
end
|
159
156
|
|
157
|
+
# Test that arguments are passed correctly to scripts (specified at
|
158
|
+
# compile time).
|
159
|
+
def test_arguments2
|
160
|
+
with_fixture 'arguments' do
|
161
|
+
args = DefaultArgs + ["--", "foo", "bar baz \"quote\"" ]
|
162
|
+
assert system("ruby", ocra, "arguments.rb", *args)
|
163
|
+
assert File.exist?("arguments.exe")
|
164
|
+
pristine_env "arguments.exe" do
|
165
|
+
system("arguments.exe")
|
166
|
+
assert_equal 5, $?.exitstatus
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
# Test that arguments are passed correctly to scripts (specified at
|
172
|
+
# compile time).
|
173
|
+
def test_arguments3
|
174
|
+
with_fixture 'arguments' do
|
175
|
+
args = DefaultArgs + ["--", "foo"]
|
176
|
+
assert system("ruby", ocra, "arguments.rb", *args)
|
177
|
+
assert File.exist?("arguments.exe")
|
178
|
+
pristine_env "arguments.exe" do
|
179
|
+
system("arguments.exe \"bar baz \\\"quote\\\"\"")
|
180
|
+
assert_equal 5, $?.exitstatus
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
# Test that arguments are passed correctly at build time.
|
186
|
+
def test_buildarg
|
187
|
+
with_fixture "buildarg" do
|
188
|
+
args = DefaultArgs + [ "--", "--some-option" ]
|
189
|
+
assert system("ruby", ocra, "buildarg.rb", *args)
|
190
|
+
assert File.exist?("buildarg.exe")
|
191
|
+
pristine_env "buildarg.exe" do
|
192
|
+
assert system("buildarg.exe")
|
193
|
+
end
|
194
|
+
end
|
195
|
+
end
|
196
|
+
|
160
197
|
# Test that the standard output from a script can be redirected to a
|
161
198
|
# file.
|
162
199
|
def test_stdout_redir
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ocra
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: -671420158
|
5
4
|
prerelease: true
|
6
5
|
segments:
|
7
6
|
- 1
|
8
|
-
-
|
9
|
-
-
|
10
|
-
-
|
11
|
-
version: 1.
|
7
|
+
- 2
|
8
|
+
- 0
|
9
|
+
- rc1
|
10
|
+
version: 1.2.0.rc1
|
12
11
|
platform: ruby
|
13
12
|
authors:
|
14
13
|
- Lars Christensen
|
@@ -16,7 +15,7 @@ autorequire:
|
|
16
15
|
bindir: bin
|
17
16
|
cert_chain: []
|
18
17
|
|
19
|
-
date: 2010-08-
|
18
|
+
date: 2010-08-22 00:00:00 +02:00
|
20
19
|
default_executable:
|
21
20
|
dependencies:
|
22
21
|
- !ruby/object:Gem::Dependency
|
@@ -27,7 +26,6 @@ dependencies:
|
|
27
26
|
requirements:
|
28
27
|
- - ">="
|
29
28
|
- !ruby/object:Gem::Version
|
30
|
-
hash: 7
|
31
29
|
segments:
|
32
30
|
- 2
|
33
31
|
- 0
|
@@ -43,7 +41,6 @@ dependencies:
|
|
43
41
|
requirements:
|
44
42
|
- - ">="
|
45
43
|
- !ruby/object:Gem::Version
|
46
|
-
hash: 21
|
47
44
|
segments:
|
48
45
|
- 2
|
49
46
|
- 6
|
@@ -93,7 +90,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
93
90
|
requirements:
|
94
91
|
- - ">="
|
95
92
|
- !ruby/object:Gem::Version
|
96
|
-
hash: 3
|
97
93
|
segments:
|
98
94
|
- 0
|
99
95
|
version: "0"
|
@@ -102,7 +98,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
102
98
|
requirements:
|
103
99
|
- - ">"
|
104
100
|
- !ruby/object:Gem::Version
|
105
|
-
hash: 25
|
106
101
|
segments:
|
107
102
|
- 1
|
108
103
|
- 3
|