ocra 1.3.0 → 1.3.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.
@@ -1,3 +1,16 @@
1
+ === 1.3.1
2
+
3
+ * Now includes $LOADED_FEATURES even when script is not run to check
4
+ dependencies. This fixes compatability with Ruby 1.9.3 where
5
+ rubygems is always loaded.
6
+
7
+ * Fixed compatability with Ruby 2.0.0: Temp-path alias in binary
8
+ changed to be valid UTF-8 character.
9
+
10
+ * README.txt updated related to --no-dep-run (karhatsu).
11
+
12
+ * Fixes for Bundler handling (DavidMikeSimon).
13
+
1
14
  === 1.3.0
2
15
 
3
16
  * Fixed some additional corner cases with absolute and relative
@@ -1,6 +1,6 @@
1
1
  = ocra
2
2
 
3
- * Homepage: http://ocra.rubyforge.org
3
+ * http://ocra.rubyforge.org
4
4
  * RubyForge project page: http://rubyforge.org/projects/ocra
5
5
  * GitHub: http://github.com/larsch/ocra
6
6
  * Issue tracker: http://github.com/larsch/ocra/issues
@@ -236,8 +236,12 @@ use other means to specify what needs to be packaged with your app.
236
236
 
237
237
  To disable automatic dependency resolution, use the --no-dep-run
238
238
  option; with it, Ocra will skip executing your program during the
239
- build process. You will also probably need to use the --add-all-core
240
- option to include the Ruby core libraries.
239
+ build process. This on the other hand requires using --gem-full option
240
+ (see more below); otherwise Ocra will not include all the necessary
241
+ files for the gems.
242
+
243
+ You will also probably need to use the --add-all-core option to
244
+ include the Ruby core libraries.
241
245
 
242
246
  If your app uses gems, then you can specify them in a
243
247
  Bundler (http://gembundler.com) Gemfile, then use the --gemfile
@@ -254,7 +258,7 @@ actually running the app during the build, you could use the
254
258
  following command:
255
259
 
256
260
  ocra someapp/script/rails someapp --output someapp.exe --add-all-core \
257
- --gemfile someapp/Gemfile --no-dep-run --chdir-first -- server
261
+ --gemfile someapp/Gemfile --no-dep-run --gem-full --chdir-first -- server
258
262
 
259
263
  Note the space between "--" and "server"! It's important; "server" is an argument to be passed to rails when the script is ran.
260
264
 
@@ -315,7 +319,7 @@ app into an installer. Save the following as "<tt>someapp.iss</tt>":
315
319
  Then, run Ocra with this command:
316
320
 
317
321
  ocra someapp/script/rails someapp --output someapp.exe --add-all-core \
318
- --gemfile someapp/Gemfile --no-dep-run --chdir-first --no-lzma \
322
+ --gemfile someapp/Gemfile --no-dep-run --gem-full --chdir-first --no-lzma \
319
323
  --innosetup someapp.iss -- server
320
324
 
321
325
  If all goes well, a file named "SomeAppInstaller.exe" will be placed
data/Rakefile CHANGED
@@ -3,13 +3,13 @@
3
3
  require 'rubygems'
4
4
  require 'hoe'
5
5
 
6
- Hoe.spec 'ocra' do |spec|
6
+ spec = Hoe.spec 'ocra' do |spec|
7
7
  spec.author = "Lars Christensen"
8
8
  spec.email = "larsch@belunktum.dk"
9
- spec.url = "http://ocra.rubyforge.org/"
10
9
  spec.readme_file = 'README.rdoc'
11
10
  spec.extra_rdoc_files = ['README.rdoc']
12
11
  end
12
+ spec.urls.each { |url| url.chomp! }
13
13
 
14
14
  task :build_stub do
15
15
  sh "mingw32-make -C src"
@@ -19,6 +19,8 @@ task :build_stub do
19
19
  end
20
20
 
21
21
  file 'share/ocra/stub.exe' => :build_stub
22
+ file 'share/ocra/stubw.exe' => :build_stub
23
+ file 'share/ocra/edicon.exe' => :build_stub
22
24
 
23
25
  task :test => :build_stub
24
26
 
@@ -41,7 +43,7 @@ file 'bin/ocrasa.rb' => [ 'bin/ocra', 'share/ocra/stub.exe', 'share/ocra/stubw.e
41
43
  cp 'bin/ocra', 'bin/ocrasa.rb'
42
44
  File.open("bin/ocrasa.rb", "a") do |f|
43
45
  f.puts "__END__"
44
-
46
+
45
47
  stub = File.open("share/ocra/stub.exe", "rb") {|g| g.read}
46
48
  stub64 = [stub].pack("m")
47
49
  f.puts stub64.size
@@ -51,7 +53,7 @@ file 'bin/ocrasa.rb' => [ 'bin/ocra', 'share/ocra/stub.exe', 'share/ocra/stubw.e
51
53
  stub64 = [stub].pack("m")
52
54
  f.puts stub64.size
53
55
  f.puts stub64
54
-
56
+
55
57
  lzma = File.open("share/ocra/lzma.exe", "rb") {|g| g.read}
56
58
  lzma64 = [lzma].pack("m")
57
59
  f.puts lzma64.size
data/bin/ocra CHANGED
@@ -17,15 +17,15 @@ module Ocra
17
17
  attr_reader :path
18
18
  SEPARATOR_PAT = /[#{Regexp.quote File::ALT_SEPARATOR}#{Regexp.quote File::SEPARATOR}]/ # }
19
19
  ABSOLUTE_PAT = /\A([A-Z]:)?#{SEPARATOR_PAT}/i
20
-
20
+
21
21
  def initialize(path)
22
22
  @path = path
23
23
  end
24
-
24
+
25
25
  def to_native
26
26
  @path.tr File::SEPARATOR, File::ALT_SEPARATOR
27
27
  end
28
-
28
+
29
29
  def to_posix
30
30
  @path.tr File::ALT_SEPARATOR, File::SEPARATOR
31
31
  end
@@ -65,7 +65,7 @@ module Ocra
65
65
  Ocra.Pathname(@path + '/' + other.path)
66
66
  end
67
67
  end
68
-
68
+
69
69
  def append_to_filename!(s)
70
70
  @path.sub!(/(\.[^.]*?|)$/) { s.to_s + $1 }
71
71
  end
@@ -138,7 +138,7 @@ module Ocra
138
138
  raise ArgumentError, obj
139
139
  end
140
140
  end
141
-
141
+
142
142
  # Variables describing the host's build environment.
143
143
  module Host
144
144
  class << self
@@ -161,7 +161,7 @@ module Ocra
161
161
  @rubyw_exe ||= (RbConfig::CONFIG['rubyw_install_name'] || "rubyw") + exeext
162
162
  end
163
163
  def ruby_exe
164
- @ruby_exe ||= (RbConfig::CONFIG['ruby_install_name'] || "ruby") + exeext
164
+ @ruby_exe ||= (RbConfig::CONFIG['ruby_install_name'] || "ruby") + exeext
165
165
  end
166
166
  def tempdir
167
167
  @tempdir ||= Ocra.Pathname(ENV['TEMP'])
@@ -174,8 +174,8 @@ module Ocra
174
174
  def self.sort_uniq(a)
175
175
  a.sort.inject([]) { |r, e| r.last == e ? r : r << e }
176
176
  end
177
-
178
- VERSION = "1.3.0"
177
+
178
+ VERSION = "1.3.1"
179
179
 
180
180
  IGNORE_MODULES = /^enumerator.so$/
181
181
 
@@ -192,11 +192,11 @@ module Ocra
192
192
  # Unlikely extensions
193
193
  \.(rdoc|c|cpp|c\+\+|cxx|h|hxx|hpp|obj|o|a)$/
194
194
  )}xi
195
-
195
+
196
196
  GEM_NON_FILE_RE = /(#{GEM_EXTRA_RE}|#{GEM_SCRIPT_RE})/
197
197
 
198
198
  # Alias for the temporary directory where files are extracted.
199
- TEMPDIR_ROOT = Pathname.new("\xFF")
199
+ TEMPDIR_ROOT = Pathname.new("|")
200
200
  # Directory for source files in temporary directory.
201
201
  SRCDIR = Pathname.new('src')
202
202
  # Directory for Ruby binaries in temporary directory.
@@ -409,7 +409,11 @@ EOF
409
409
  puts usage
410
410
  exit 0
411
411
  else
412
- @options[:files] << arg
412
+ if __FILE__.respond_to?(:encoding)
413
+ @options[:files] << arg.dup.force_encoding(__FILE__.encoding)
414
+ else
415
+ @options[:files] << arg
416
+ end
413
417
  end
414
418
  end
415
419
 
@@ -462,6 +466,9 @@ EOF
462
466
  modules_to_check.each do |mod|
463
467
  modules_checked[mod] = true
464
468
  mod.constants.each do |const|
469
+ # Module::Config causes warning on Ruby 1.9.3 - prevent autoloading
470
+ next if Module === mod && const == :Config
471
+
465
472
  if mod.autoload?(const)
466
473
  begin
467
474
  mod.const_get(const)
@@ -497,7 +504,7 @@ EOF
497
504
  candidates.sort_by { |loadpath| loadpath.path.size }.last
498
505
  end
499
506
  end
500
-
507
+
501
508
  # Find the root of all files specified on the command line and use
502
509
  # it as the "src" of the output.
503
510
  def Ocra.find_src_root(files)
@@ -554,7 +561,16 @@ EOF
554
561
 
555
562
  ENV['BUNDLE_GEMFILE'] = Ocra.gemfile
556
563
  Bundler.load.specs.each do |spec|
557
- gems << [Pathname(spec.installation_path), spec.full_name]
564
+ Ocra.verbose_msg "From Gemfile, adding gem #{spec.full_name}"
565
+ gems << [Pathname(spec.base_dir), spec.full_name]
566
+ end
567
+
568
+ unless gems.any?{|dir, name| name =~ /^bundler-[.0-9]+/}
569
+ # Bundler itself wasn't added for some reason, let's put it in directly
570
+ Ocra.verbose_msg "From Gemfile, forcing inclusion of bundler gem itself"
571
+ bundler_spec = Gem.loaded_specs["bundler"]
572
+ bundler_spec or Ocra.fatal_error "Unable to locate bundler gem"
573
+ gems << [Pathname(bundler_spec.base_dir), bundler_spec.full_name]
558
574
  end
559
575
  end
560
576
 
@@ -664,26 +680,25 @@ EOF
664
680
  features_from_gems -= gem_files
665
681
  return gem_files, features_from_gems
666
682
  end
667
-
683
+
668
684
  def Ocra.build_exe
669
685
  all_load_paths = $LOAD_PATH.map { |loadpath| Pathname(loadpath).expand }
670
686
  @added_load_paths = ($LOAD_PATH - @load_path_before).map { |loadpath| Pathname(loadpath).expand }
671
687
  working_directory = Pathname.pwd.expand
672
688
 
673
689
  restore_environment
674
-
675
- features = []
676
- # If the script was ran, then detect the features it used
690
+
691
+ # If the script was ran, then detect the features it used
677
692
  if Ocra.run_script
678
693
  # Attempt to autoload libraries before doing anything else.
679
694
  attempt_load_autoload if Ocra.load_autoload
680
-
681
- # Store the currently loaded files (before we require rbconfig for
682
- # our own use).
683
- features = $LOADED_FEATURES.map { |feature| Pathname(feature) }
684
- features.delete_if { |feature| feature =~ IGNORE_MODULES }
685
695
  end
686
696
 
697
+ # Store the currently loaded files (before we require rbconfig for
698
+ # our own use).
699
+ features = $LOADED_FEATURES.map { |feature| Pathname(feature) }
700
+ features.delete_if { |feature| feature =~ IGNORE_MODULES }
701
+
687
702
  # Find gemspecs to include
688
703
  if defined?(Gem)
689
704
  @gemspecs = Gem.loaded_specs.map { |name,info| Pathname(info.loaded_from) }
@@ -733,7 +748,7 @@ EOF
733
748
  feature = feature.relative_path_from(path.expand)
734
749
  end
735
750
  fullpath = feature.expand(path)
736
-
751
+
737
752
  if fullpath.subpath?(Host.exec_prefix)
738
753
  # Features found in the Ruby installation are put in the
739
754
  # temporary Ruby installation.
@@ -863,13 +878,13 @@ EOF
863
878
  end
864
879
  sb.createfile(dll, target)
865
880
  end
866
-
881
+
867
882
  # Add extra DLLs specified on the command line
868
883
  Ocra.extra_dlls.each do |dll|
869
884
  Ocra.msg "Adding supplied DLL #{dll}"
870
885
  sb.createfile(Host.bindir / dll, BINDIR / dll)
871
886
  end
872
-
887
+
873
888
  # Add gemspec files
874
889
  @gemspecs = sort_uniq(@gemspecs)
875
890
  @gemspecs.each do |gemspec|
@@ -926,7 +941,7 @@ EOF
926
941
  bytes_needed = bytes_needed_buffer.unpack("I")[0]
927
942
  break if bytes_needed <= module_handle_buffer.size
928
943
  end
929
-
944
+
930
945
  handles = module_handle_buffer.unpack("I*")
931
946
  handles.select { |handle| handle > 0 }.map do |handle|
932
947
  str = "\x00" * 256
@@ -1047,10 +1062,10 @@ EOF
1047
1062
  result = system(*iscc_cmd)
1048
1063
  if not result
1049
1064
  case $?
1050
- when 0 then raise RuntimeError.new("ISCC reported success, but system reported error?")
1051
- when 1 then raise RuntimeError.new("ISCC reports invalid command line parameters")
1052
- when 2 then raise RuntimeError.new("ISCC reports that compilation failed")
1053
- else raise RuntimeError.new("ISCC failed to run. Is the InnoSetup directory in your PATH?")
1065
+ when 0 then raise RuntimeError.new("ISCC reported success, but system reported error?")
1066
+ when 1 then raise RuntimeError.new("ISCC reports invalid command line parameters")
1067
+ when 2 then raise RuntimeError.new("ISCC reports that compilation failed")
1068
+ else raise RuntimeError.new("ISCC failed to run. Is the InnoSetup directory in your PATH?")
1054
1069
  end
1055
1070
  end
1056
1071
  rescue Exception => e
@@ -1120,9 +1135,9 @@ EOF
1120
1135
  def showtempdir(x)
1121
1136
  x.to_s.gsub(TEMPDIR_ROOT, "<tempdir>")
1122
1137
  end
1123
-
1138
+
1124
1139
  end # class OcraBuilder
1125
-
1140
+
1126
1141
  end # module Ocra
1127
1142
 
1128
1143
  if File.basename(__FILE__) == File.basename($0)
@@ -1132,7 +1147,7 @@ if File.basename(__FILE__) == File.basename($0)
1132
1147
  if not Ocra.files.first.exist?
1133
1148
  Ocra.fatal_error "#{Ocra.files[0]} was not found!"
1134
1149
  end
1135
-
1150
+
1136
1151
  at_exit do
1137
1152
  if $!.nil? or $!.kind_of?(SystemExit)
1138
1153
  Ocra.build_exe
@@ -1,3 +1,3 @@
1
1
  class Ocra
2
- VERSION = '1.3.0'
2
+ VERSION = '1.3.1'
3
3
  end
Binary file
Binary file
Binary file
@@ -9,7 +9,7 @@ begin
9
9
  gem 'win32-api', '>=1.2.0'
10
10
  require "win32/api"
11
11
  $have_win32_api = true
12
- rescue LoadError => e
12
+ rescue LoadError
13
13
  $have_win32_api = false
14
14
  end
15
15
 
@@ -18,7 +18,7 @@ include FileUtils
18
18
  class TestOcra < Test::Unit::TestCase
19
19
 
20
20
  # Default arguments for invoking OCRA when running tests.
21
- DefaultArgs = [ '--no-lzma' ]
21
+ DefaultArgs = [ '--no-lzma', '--verbose' ]
22
22
  DefaultArgs << "--quiet" unless ENV["OCRA_VERBOSE_TEST"]
23
23
  DefaultArgs.push '--no-autodll' if not $have_win32_api
24
24
 
@@ -42,6 +42,11 @@ class TestOcra < Test::Unit::TestCase
42
42
  end
43
43
  end
44
44
 
45
+ def system(*args)
46
+ puts args.join(" ") if ENV["OCRA_VERBOSE_TEST"]
47
+ Kernel.system(*args)
48
+ end
49
+
45
50
  attr_reader :ocra
46
51
 
47
52
  def initialize(*args)
@@ -140,7 +145,7 @@ class TestOcra < Test::Unit::TestCase
140
145
  end
141
146
  end
142
147
  end
143
-
148
+
144
149
  # Test that executables can writing a file to the current working
145
150
  # directory.
146
151
  def test_writefile
@@ -188,7 +193,7 @@ class TestOcra < Test::Unit::TestCase
188
193
  # be automatically included and usable in packaged app
189
194
  def test_gemfile
190
195
  with_fixture 'bundlerusage' do
191
- assert system("ruby", ocra, "bundlerusage.rb", "Gemfile", *(DefaultArgs + ["--no-dep-run", "--add-all-core", "--gemfile", "Gemfile"]))
196
+ assert system("ruby", ocra, "bundlerusage.rb", "Gemfile", *(DefaultArgs + ["--no-dep-run", "--add-all-core", "--gemfile", "Gemfile", "--gem-all"]))
192
197
  pristine_env "bundlerusage.exe" do
193
198
  assert system("bundlerusage.exe")
194
199
  end
@@ -288,7 +293,7 @@ class TestOcra < Test::Unit::TestCase
288
293
  end
289
294
  end
290
295
  end
291
-
296
+
292
297
  # Test that the standard output from a script can be redirected to a
293
298
  # file.
294
299
  def test_stdout_redir
@@ -327,7 +332,7 @@ class TestOcra < Test::Unit::TestCase
327
332
  return if gdbmdll.nil?
328
333
  args.push '--dll', File.basename(gdbmdll)
329
334
  end
330
-
335
+
331
336
  with_fixture 'gdbmdll' do
332
337
  assert system("ruby", ocra, "gdbmdll.rb", *args)
333
338
  with_env 'PATH' => '.' do
@@ -449,7 +454,7 @@ class TestOcra < Test::Unit::TestCase
449
454
  end
450
455
  end
451
456
  end
452
-
457
+
453
458
  # Should pick up file when script modifies $LOAD_PATH by adding
454
459
  # dirname of script.
455
460
  def test_loadpath_mangling_dirname
@@ -506,7 +511,7 @@ class TestOcra < Test::Unit::TestCase
506
511
  end
507
512
  end
508
513
  end
509
-
514
+
510
515
  # Test that ocra.rb accepts --version and outputs the version number.
511
516
  def test_version
512
517
  assert_match(/^Ocra \d+(\.\d)+(.[a-z]+\d+)?$/, `ruby \"#{ocra}\" --version`)
@@ -685,14 +690,14 @@ class TestOcra < Test::Unit::TestCase
685
690
  # Test that the --chdir-first option changes directory before exe starts script
686
691
  def test_chdir_first
687
692
  with_fixture 'writefile' do
688
- # Control test; make sure the writefile script works as expected under default options
693
+ # Control test; make sure the writefile script works as expected under default options
689
694
  assert system("ruby", ocra, "writefile.rb", *(DefaultArgs))
690
695
  pristine_env "writefile.exe" do
691
696
  assert !File.exist?("output.txt")
692
697
  assert system("writefile.exe")
693
698
  assert File.exist?("output.txt")
694
699
  end
695
-
700
+
696
701
  assert system("ruby", ocra, "writefile.rb", *(DefaultArgs + ["--chdir-first"]))
697
702
  pristine_env "writefile.exe" do
698
703
  assert !File.exist?("output.txt")
@@ -717,6 +722,7 @@ class TestOcra < Test::Unit::TestCase
717
722
  end
718
723
 
719
724
  def test_explicit_in_exec_prefix
725
+ return unless File.directory?(RbConfig::CONFIG["exec_prefix"] + "/include")
720
726
  path = File.join(RbConfig::CONFIG["exec_prefix"], "include", "**", "*.h")
721
727
  number_of_files = Dir[path].size
722
728
  assert number_of_files > 3
@@ -728,5 +734,20 @@ class TestOcra < Test::Unit::TestCase
728
734
  end
729
735
  end
730
736
  end
731
-
737
+
738
+ # Hello world test. Test that we can build and run executables.
739
+ def test_nonexistent_temp
740
+ with_fixture 'helloworld' do
741
+ assert system("ruby", ocra, "helloworld.rb", *DefaultArgs)
742
+ assert File.exist?("helloworld.exe")
743
+ pristine_env "helloworld.exe" do
744
+ with_env "TEMP" => "c:\\thispathdoesnotexist12345", "TMP" => "c:\\thispathdoesnotexist12345" do
745
+ assert File.exist?("helloworld.exe")
746
+ system("helloworld.exe 2>NUL")
747
+ assert File.exist?("helloworld.exe")
748
+ end
749
+ end
750
+ end
751
+ end
752
+
732
753
  end
metadata CHANGED
@@ -1,40 +1,67 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ocra
3
- version: !ruby/object:Gem::Version
4
- version: 1.3.0
3
+ version: !ruby/object:Gem::Version
4
+ hash: 25
5
5
  prerelease:
6
+ segments:
7
+ - 1
8
+ - 3
9
+ - 1
10
+ version: 1.3.1
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Lars Christensen
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2011-06-19 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: hoe
16
- requirement: &7397928 !ruby/object:Gem::Requirement
17
+
18
+ date: 2013-03-29 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rdoc
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
17
24
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: 2.9.4
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ hash: 19
29
+ segments:
30
+ - 3
31
+ - 10
32
+ version: "3.10"
22
33
  type: :development
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: hoe
23
37
  prerelease: false
24
- version_requirements: *7397928
25
- description: ! "OCRA (One-Click Ruby Application) builds Windows executables from
26
- Ruby\r\nsource code. The executable is a self-extracting, self-running\r\nexecutable
27
- that contains the Ruby interpreter, your source code and\r\nany additionally needed
28
- ruby libraries or DLL."
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ hash: 13
44
+ segments:
45
+ - 3
46
+ - 5
47
+ version: "3.5"
48
+ type: :development
49
+ version_requirements: *id002
50
+ description: |-
51
+ OCRA (One-Click Ruby Application) builds Windows executables from Ruby
52
+ source code. The executable is a self-extracting, self-running
53
+ executable that contains the Ruby interpreter, your source code and
54
+ any additionally needed ruby libraries or DLL.
29
55
  email: larsch@belunktum.dk
30
- executables:
56
+ executables:
31
57
  - ocra
32
58
  extensions: []
33
- extra_rdoc_files:
59
+
60
+ extra_rdoc_files:
34
61
  - History.txt
35
62
  - Manifest.txt
36
63
  - README.rdoc
37
- files:
64
+ files:
38
65
  - History.txt
39
66
  - Manifest.txt
40
67
  - README.rdoc
@@ -47,32 +74,39 @@ files:
47
74
  - test/test_ocra.rb
48
75
  - lib/ocra.rb
49
76
  - .gemtest
50
- homepage: http://ocra.rubyforge.org/
77
+ homepage: http://ocra.rubyforge.org
51
78
  licenses: []
79
+
52
80
  post_install_message:
53
- rdoc_options:
81
+ rdoc_options:
54
82
  - --main
55
83
  - README.rdoc
56
- require_paths:
84
+ require_paths:
57
85
  - lib
58
- required_ruby_version: !ruby/object:Gem::Requirement
86
+ required_ruby_version: !ruby/object:Gem::Requirement
59
87
  none: false
60
- requirements:
61
- - - ! '>='
62
- - !ruby/object:Gem::Version
63
- version: '0'
64
- required_rubygems_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ hash: 3
92
+ segments:
93
+ - 0
94
+ version: "0"
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
65
96
  none: false
66
- requirements:
67
- - - ! '>='
68
- - !ruby/object:Gem::Version
69
- version: '0'
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ hash: 3
101
+ segments:
102
+ - 0
103
+ version: "0"
70
104
  requirements: []
105
+
71
106
  rubyforge_project: ocra
72
- rubygems_version: 1.8.4
107
+ rubygems_version: 1.8.24
73
108
  signing_key:
74
109
  specification_version: 3
75
- summary: ! "OCRA (One-Click Ruby Application) builds Windows executables from Ruby\r
76
- source code"
77
- test_files:
110
+ summary: OCRA (One-Click Ruby Application) builds Windows executables from Ruby
78
111
  source code
112
+ test_files:
79
113
  - test/test_ocra.rb