veracode 1.0.0.alpha15 → 1.0.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5ad985e497f862247d92d07c550cf5e71f30e91d4a4a599937ae3af3c2a56bb0
4
- data.tar.gz: fbe71f39a1628e58765bba17d847812d6f3250b27f4937f4bc1b492be6ecd64b
3
+ metadata.gz: 32f374241e790d16dcc804e4dd3dbbb754417e0b99afa9a3c2ab9fe80ef6466d
4
+ data.tar.gz: a10a06a8bb5b5d573808c3f2855e3b7ba9eecf2535f975f13966e755771b9dc0
5
5
  SHA512:
6
- metadata.gz: 377bdd9c7c20e5811aa04b42bed81d94ce8e97a8f33e832cee012b10dac39aadba0b239a757b8b5d03f2ce46b2efb420871ff949f7273e83a9cc6916faa68333
7
- data.tar.gz: c42fd23e7d02f02d0e3565866aef8e21f0dc0271172f7ad95c35f9754f6897b6ad89666a44f89a6be405b95d16f0a9e95ba681027bdb0f82eda88b83657d012e
6
+ metadata.gz: 66f1e39a03ef77a76bc33febbbe7e7778f3d653f2d76f5eba02c0e93a26e0eacf2e3fecfd14a3281281c6ebcf27330d219ffded199ad56db7c5791658bcb66ff
7
+ data.tar.gz: b9498b2e70b3b3c3b509937d5001067c9fe710388e7b86ab1a98c607810c41862f932b91d4112530473e412653bd861b687561af8339c662622f69e50efb4017
data/bin/veracode CHANGED
@@ -23,8 +23,13 @@ require 'veracode/version'
23
23
  $options = {
24
24
  :archive_source => true,
25
25
  :include_inherited => false,
26
- :jruby => false,
27
26
  :environment => false,
27
+ :verbose => false,
28
+ :jruby => false,
29
+ :skipactiverecord => false,
30
+ :skipactionview => false,
31
+ :skipsprockets => false,
32
+ :snapshot => false
28
33
  }
29
34
 
30
35
  subcommand = ARGV.shift
@@ -61,6 +66,10 @@ case subcommand
61
66
  $DEBUG = true
62
67
  end
63
68
 
69
+ opts.on("--debug-snapshot", "Generate a snapshot of the prepare state for Veracode debugging.") do
70
+ $options[:snapshot] = true
71
+ end
72
+
64
73
  end.parse!
65
74
 
66
75
  Veracode.prepare
data/lib/veracode.rb CHANGED
@@ -36,6 +36,7 @@ module Veracode
36
36
  @archive_filename = nil
37
37
  @archive_dirname = nil
38
38
 
39
+ @expanded_app_dir = Dir.getwd
39
40
 
40
41
  def self.init
41
42
  if Gem::Dependency.new('', '~> 2.2.0').match?('', RUBY_VERSION)
@@ -120,10 +121,11 @@ module Veracode
120
121
 
121
122
  @manifest += Dir.glob("*").keep_if {|f| File.file?(f)}
122
123
 
123
- # {app config db doc lib log public script test tmp vendor}
124
- %w{app config lib log public script vendor}.each {|dirname|
124
+ #{app config db doc lib log public script test tmp vendor}
125
+ %w{app config lib log public script}.each {|dirname|
125
126
  @manifest += Dir[File.join(dirname, "**", "*")].keep_if {|f| File.file?(f)}
126
127
  }
128
+ @manifest += Dir[File.join("vendor", "**", "*.rb")]
127
129
  @manifest += Dir[File.join("db", "**", "*.rb")]
128
130
 
129
131
  if $options[:archive_source]
@@ -202,7 +204,11 @@ module Veracode
202
204
  exit
203
205
  end
204
206
 
205
- puts "Please upload #{@archive_filename}"
207
+ if $options[:snapshot]
208
+ puts "Please provide #{@archive_filename} to veracode for further investigation."
209
+ else
210
+ puts "Please upload #{@archive_filename}"
211
+ end
206
212
  end
207
213
 
208
214
  def self.cleanup
@@ -284,23 +290,27 @@ module Veracode
284
290
  end
285
291
 
286
292
  def self.safe_name(o)
287
- case
288
- when o == ActiveSupport::TimeWithZone
289
- "ActiveSupport::TimeWithZone"
290
- when o.is_a?(Module)
291
- begin
292
- ( o.name.nil? ? o.to_s : o.name.to_s )
293
- rescue
293
+ begin
294
+ case
295
+ when o == ActiveSupport::TimeWithZone
296
+ "ActiveSupport::TimeWithZone"
297
+ when o.is_a?(Module)
294
298
  begin
295
- ( o.nil? ? "nil" : o.to_s )
299
+ ( o.name.nil? ? o.to_s : o.name.to_s )
296
300
  rescue
297
- "nil"
301
+ begin
302
+ ( o.nil? ? "nil" : o.to_s )
303
+ rescue
304
+ ( o == nil ? "nil" : o.to_s ) # in case of monkey patched nil?
305
+ end
298
306
  end
307
+ when o.is_a?(Method), o.is_a?(UnboundMethod)
308
+ o.name.to_s
309
+ else
310
+ o.to_s
299
311
  end
300
- when o.is_a?(Method), o.is_a?(UnboundMethod)
301
- o.name.to_s
302
- else
303
- o.to_s
312
+ rescue
313
+ "Veracode" #should result in this being dropped from the archive since we can't get a safe name for it
304
314
  end
305
315
  end
306
316
 
@@ -392,8 +402,8 @@ module Veracode
392
402
 
393
403
  if with_disasm
394
404
  insns = RubyVM::InstructionSequence.disassemble(m)
395
- formatted += ( (insns.nil? || insns.empty?) ?
396
- "== disasm\n== end disasm\n" :
405
+ formatted += ( (insns.nil? || insns.empty? || insns[/.*#{@expanded_app_dir}.*/].nil?) ?
406
+ "\n" :
397
407
  "#{insns}== end disasm\n"
398
408
  )
399
409
  end
@@ -419,20 +429,25 @@ module Veracode
419
429
  ##############################################################################
420
430
  # Archiving Headers
421
431
  def self.class_header(c)
422
- return "" unless c.is_a? Class
432
+ begin
433
+ return "" unless c.is_a? Class
434
+
435
+ puts " class header" if $options[:verbose]
423
436
 
424
- puts " class header" if $options[:verbose]
437
+ case
438
+ when c.superclass.nil? # this should only happen for BasicObject
439
+ return ""
440
+ when c.superclass.name.nil? # in case the parent is anonymous
441
+ name = c.superclass.to_s.dump
442
+ else
443
+ name = c.superclass.name.dump
444
+ end
425
445
 
426
- case
427
- when c.superclass.nil? # this should only happen for BasicObject
446
+ "superclass #{name}\n"
447
+ rescue Exception => e
448
+ log_error e.message
428
449
  return ""
429
- when c.superclass.name.nil? # in case the parent is anonymous
430
- name = c.superclass.to_s.dump
431
- else
432
- name = c.superclass.name.dump
433
450
  end
434
-
435
- "superclass #{name}\n"
436
451
  end
437
452
 
438
453
  def self.module_header(m)
@@ -509,25 +524,36 @@ module Veracode
509
524
  # m.respond_to?(:global_variables) was throwing exceptions
510
525
  end
511
526
 
512
- %w[ public protected private ].each {|p|
513
- get_methods = (p + "_instance_methods").to_sym
514
- if m.respond_to?(get_methods) && m.__send__(get_methods, $options[:include_inherited]).count > 0
515
- m.__send__(get_methods, $options[:include_inherited]).each do |m_symbol|
516
- begin
517
- method = m.instance_method(m_symbol)
518
- formatted_contents += format_method(method, "#{p.to_s}_instance", with_disasm)
519
- rescue Exception => e
520
- log_error "Error archiving #{p.to_s} instance method #{m_symbol.to_s.dump}: #{e.message}"
527
+ begin
528
+ %w[ public protected private ].each {|p|
529
+ get_methods = (p + "_instance_methods").to_sym
530
+ if m.respond_to?(get_methods) && m.__send__(get_methods, $options[:include_inherited]).count > 0
531
+ m.__send__(get_methods, $options[:include_inherited]).each do |m_symbol|
532
+ begin
533
+ method = m.instance_method(m_symbol)
534
+ formatted_contents += format_method(method, "#{p.to_s}_instance", with_disasm)
535
+ rescue Exception => e
536
+ log_error "Error archiving #{p.to_s} instance method #{m_symbol.to_s.dump}: #{e.message}"
537
+ end
521
538
  end
522
539
  end
523
- end
524
- }
540
+ }
541
+ rescue Exception => e
542
+ # m.respond_to?(get_methods)
543
+ end
525
544
 
526
545
  formatted_contents
527
546
  end
528
547
 
529
548
  def self.object_contents(o, with_disasm=true)
530
- return "" unless !o.nil? && o.is_a?(Object)
549
+ begin
550
+ return "" unless !o.nil?
551
+ rescue Exception => e
552
+ log_error "Error testing #{o} with nil?. Probable monkey patching. #{e.message}"
553
+ return "" if o == nil
554
+ end
555
+
556
+ return "" unless o.is_a?(Object)
531
557
 
532
558
  puts " object contents" if $options[:verbose]
533
559
 
@@ -571,12 +597,28 @@ module Veracode
571
597
  ##############################################################################
572
598
  # Archiving Objects
573
599
  def self.archive(objects, with_disasm=true)
574
- objects = objects - [
575
- Veracode,
576
- Veracode::ActiveRecord,
577
- Veracode::ActiveRecord::Model,
578
- Veracode::ActiveRecord::Schema,
579
- ]
600
+ veracode_artifacts = Set[
601
+ safe_name(Veracode),
602
+ safe_name(Veracode::ActiveRecord),
603
+ safe_name(Veracode::ActiveRecord::Model),
604
+ safe_name(Veracode::ActiveRecord::Schema)
605
+ ]
606
+ rails_filters = [
607
+ "ActionCable::",
608
+ "ActionController::",
609
+ "ActionDispatch::",
610
+ "ActionMailer::",
611
+ "ActiveJob::",
612
+ "ActiveSupport::",
613
+ "ActiveStorage::",
614
+ "ActionView::(?!CompiledTemplates)", #Allows Compiled templates with the not group
615
+ "ActiveRecord::",
616
+ ]
617
+ objects = objects.reject do |o|
618
+ sn = safe_name(o).dup
619
+ while with_disasm && !sn.slice!(/^#<(Class|Module):/).nil? do sn = sn[0..-2] end #strip #<Class: and #<Module: prefix, strip corresponding > suffix
620
+ veracode_artifacts.include?(sn) || (with_disasm && sn[/^(#{rails_filters.join('|')}).*/])
621
+ end
580
622
 
581
623
  if $options[:verbose]
582
624
  puts "Archiving #{objects.count.to_s} objects" + (with_disasm ? " with disassembly" : "")
@@ -585,18 +627,47 @@ module Veracode
585
627
 
586
628
  objects.sort_by {|o| safe_name(o) }.each do |o|
587
629
 
588
- puts "archiving #{o.class.to_s.downcase} #{quote(safe_name(o))}" if $options[:verbose]
630
+ sn = safe_name(o)
631
+ puts "archiving #{o.class.to_s.downcase} #{quote(sn)}" if $options[:verbose]
589
632
 
590
- add_to_archive "#{o.class.to_s.downcase} #{quote(safe_name(o))}\n" +
633
+ add_to_archive "#{o.class.to_s.downcase} #{quote(sn)}\n" +
591
634
  ( o.is_a?(Class) ? class_header(o) : "") + # superclass
635
+ ( @rails6 && sn == "ActionView::Base" ? "include \"ActionView::CompiledTemplates\"\n" : "") + #hack for rails 6 compiled template output
592
636
  ( o.is_a?(Module) ? module_header(o) : "") + # included modules
593
- ( (o.is_a?(Object) && !o.nil?) ? object_contents(o, with_disasm) : "") +
637
+ ( o.is_a?(Object) ? object_contents(o, with_disasm) : "") +
594
638
  ( o.is_a?(Module) ? module_contents(o, with_disasm) : "") +
595
639
  "end#{o.class.to_s.downcase}\n" +
596
640
  "\n"
597
641
  end
598
642
  end
599
643
 
644
+ def self.archive_rails6_templates
645
+ puts "archiving views" if $options[:verbose]
646
+ o = @view.compiled_method_container
647
+ compiled_views = o.instance_methods - @view_methods
648
+ formatted_contents = ""
649
+ for m_symbol in compiled_views
650
+ begin
651
+ m = o.instance_method(m_symbol)
652
+ formatted_contents += format_method(m, "public_instance", true)
653
+ rescue Exception => e
654
+ log_error "Error archiving singleton method #{m_symbol.to_s.dump}: #{e.message}"
655
+ end
656
+ end
657
+ # fake the module outpput to match what SAF expects from Rails <= 5
658
+ add_to_archive "module \"ActionView::CompiledTemplates\"\n" +
659
+ "extend \"ActiveSupport::Dependencies::ModuleConstMissing\"\n" +
660
+ "extend \"Module::Concerning\"\n" +
661
+ "extend \"ActiveSupport::ToJsonWithActiveSupportEncoder\"\n" +
662
+ "extend \"PP::ObjectMixin\"\n" +
663
+ "extend \"ActiveSupport::Dependencies::Loadable\"\n" +
664
+ "extend \"JSON::Ext::Generator::GeneratorMethods::Object\"\n" +
665
+ "extend \"ActiveSupport::Tryable\"\n" +
666
+ "extend \"Kernel\"\n" +
667
+ formatted_contents +
668
+ "endmodule\n"
669
+ end
670
+
600
671
 
601
672
  def self.compile_templates
602
673
 
@@ -642,7 +713,11 @@ module Veracode
642
713
 
643
714
  assigns = {}
644
715
  view = ActionView::Base.new(view_paths, assigns)
645
- controller_view = ApplicationController.new.view_context
716
+ begin
717
+
718
+ rescue Exception => e
719
+ log_error "Unable to get controller view context (#{e.message})"
720
+ end
646
721
 
647
722
  templates.each { |template|
648
723
  puts "Compiling template #{template}" if $options[:verbose]
@@ -655,9 +730,11 @@ module Veracode
655
730
  end
656
731
  }
657
732
 
658
- puts "Compiled #{ActionView::CompiledTemplates.instance_methods.count.to_s} templates" if $options[:verbose]
659
- log_error "Compiled #{ActionView::CompiledTemplates.instance_methods.count.to_s} templates"
660
- log_error "Not all templates were compiled" if ActionView::CompiledTemplates.instance_methods.count < templates.count
733
+ unless @rails6
734
+ puts "Compiled #{ActionView::CompiledTemplates.instance_methods.count.to_s} templates" if $options[:verbose]
735
+ log_error "Compiled #{ActionView::CompiledTemplates.instance_methods.count.to_s} templates"
736
+ log_error "Not all templates were compiled" if ActionView::CompiledTemplates.instance_methods.count < templates.count
737
+ end
661
738
  end
662
739
 
663
740
  def self.compile_erb_templates
@@ -700,7 +777,9 @@ module Veracode
700
777
  )
701
778
 
702
779
  case t.method(:compile).arity
703
- when 2 # Rails 3.1.0+
780
+ when 1 # Rails 6
781
+ t.send(:compile, @view)
782
+ when 2 # Rails 3.1.0+
704
783
  t.send(:compile, ActionView::Base.new, ActionView::CompiledTemplates)
705
784
  when 3
706
785
  t.send(:compile, {}, ActionView::Base.new, ActionView::CompiledTemplates)
@@ -713,7 +792,7 @@ module Veracode
713
792
 
714
793
  }
715
794
 
716
- puts "Compiled templates: " + ActionView::CompiledTemplates.instance_methods.count.to_s if $options[:verbose]
795
+ puts "Compiled templates: " + ActionView::CompiledTemplates.instance_methods.count.to_s if $options[:verbose] && !@rails6
717
796
 
718
797
  end
719
798
 
@@ -756,7 +835,9 @@ module Veracode
756
835
  )
757
836
 
758
837
  case t.method(:compile).arity
759
- when 2 # Rails 3.1.0+
838
+ when 1 # Rails 6
839
+ t.send(:compile, @view)
840
+ when 2 # Rails 3.1.0+
760
841
  t.send(:compile, ActionView::Base.new, ActionView::CompiledTemplates)
761
842
  when 3
762
843
  t.send(:compile, {}, ActionView::Base.new, ActionView::CompiledTemplates)
@@ -769,7 +850,7 @@ module Veracode
769
850
 
770
851
  }
771
852
 
772
- puts "Compiled templates: " + ActionView::CompiledTemplates.instance_methods.count.to_s if $options[:verbose]
853
+ puts "Compiled templates: " + ActionView::CompiledTemplates.instance_methods.count.to_s if $options[:verbose] && !@rails6
773
854
 
774
855
  end
775
856
 
@@ -787,6 +868,9 @@ module Veracode
787
868
  lib = "#{part}/#{lib}"
788
869
  lib = lib[0..lib.length-2] if lib[lib.length-1] == '/'
789
870
  begin
871
+ if @rails6 && (lib =~ /node_modules/ || lib == 'debug')
872
+ next
873
+ end
790
874
  if cond_require lib
791
875
  puts "requiring #{lib}" if $options[:verbose]
792
876
  end
@@ -826,9 +910,6 @@ def self.require_rails(gemdir)
826
910
  end
827
911
  end
828
912
 
829
-
830
-
831
-
832
913
  ################################################################################
833
914
  # Subcommands
834
915
  def self.prepare
@@ -880,11 +961,12 @@ end
880
961
  puts "Required rails" if $options[:verbose]
881
962
  end
882
963
 
964
+ @rails6 = Gem::Version.new(Rails.version) >= Gem::Version.new("6.0.0")
883
965
  ## Imitate script/rails
884
966
  # APP_PATH = File.expand_path('config/application')
885
- # APP_PATH is already set in bin/veracode
967
+ # APP_PATH is already set in bin/veracode
886
968
  #require File.expand_path('../../config/boot', __FILE__)
887
- glob_require "config/boot.rb"
969
+ glob_require "config/boot.rb"
888
970
  #require 'rails/commands'
889
971
  # this will trigger the console to be launched
890
972
  # ARGV.clear
@@ -893,7 +975,16 @@ end
893
975
  # require 'rails/commands'
894
976
 
895
977
  ## Imitate rails/commands when console
896
- cond_require 'rails/commands/console.rb'
978
+ if @rails6 || Gem::Version.new(Rails.version) >= Gem::Version.new("5.1.0")
979
+ cond_require 'rails/command.rb'
980
+ cond_require 'rails/command/actions.rb'
981
+ cond_require 'rails/command/base.rb'
982
+ cond_require 'rails/command/behavior.rb'
983
+ cond_require 'rails/command/environment_argument.rb'
984
+ cond_require 'rails/commands/console/console_command.rb'
985
+ else
986
+ cond_require 'rails/commands/console.rb'
987
+ end
897
988
  # require APP_PATH # => config/application.rb
898
989
 
899
990
  glob_require "config/application.rb"
@@ -929,36 +1020,58 @@ end
929
1020
 
930
1021
  puts "Phase 3 - Imitate Rails" if $options[:verbose]
931
1022
 
932
- any_new = true
933
- while any_new
934
- any_new = false
935
- any_new |= glob_require "lib/**/*.rb"
936
- any_new |= glob_require "app/**/*.rb"
937
- puts "new successful requires? #{any_new.to_s}" if $options[:verbose]
938
- end
1023
+ begin
1024
+ any_new = true
1025
+ while any_new
1026
+ any_new = false
1027
+ any_new |= glob_require "lib/**/*.rb"
1028
+ any_new |= glob_require "app/**/*.rb"
1029
+ puts "new successful requires? #{any_new.to_s}" if $options[:verbose]
1030
+ end
939
1031
 
940
- compile_templates
1032
+ if @rails6
1033
+ self.update
1034
+ @view = ActionView::Base.with_empty_template_cache
1035
+ @view_methods = @view.compiled_method_container.instance_methods
1036
+ compile_erb_templates
1037
+ compile_haml_templates
1038
+ self.stats if $options[:verbose]
1039
+ else
1040
+ compile_templates
1041
+ self.update
1042
+ self.stats if $options[:verbose]
1043
+ end
941
1044
 
942
- self.update
943
- self.stats if $options[:verbose]
1045
+ # Ensure compiled templates are fully disassembled in archive
1046
+ @baseline_modules.delete(ActionView::CompiledTemplates) unless @rails6
944
1047
 
945
- # Ensure compiled templates are fully disassembled in archive
946
- @baseline_modules.delete(ActionView::CompiledTemplates)
1048
+ if $options[:environment]
1049
+ puts "Processing and disassembling environment"
1050
+ archive(@modules.reject {|o| safe_name(o) =~ /^#<(Class|Module):0x[0-9a-f]+>/i }
1051
+ .reject {|o| safe_name(o) =~ /^Veracode/ }
1052
+ .reject {|o| safe_name(o) =~ /^EmptyRails/ }
1053
+ .reject {|o| safe_name(o) =~ /^ActionView::CompiledTemplates$/ }, false)
1054
+ else
1055
+ puts "Processing Ruby and Rails classes and modules"
1056
+ archive(@baseline_modules, false)
1057
+ add_to_archive "\n# Phase 3 - App disassembly\n"
1058
+ puts "Processing and disassembling #{APP_NAME} classes and modules"
1059
+ safe_baseline_modules = @baseline_modules.each_with_object(Set.new) { |o, s| s << safe_name(o) }
1060
+ archive(@modules.reject {|o| safe_baseline_modules.include?(safe_name(o))}, true)
1061
+ if @rails6
1062
+ archive_rails6_templates()
1063
+ end
1064
+ archive_schema
947
1065
 
948
- if $options[:environment]
949
- puts "Processing and disassembling environment"
950
- archive(@modules.reject {|o| safe_name(o) =~ /^#<(Class|Module):0x[0-9a-f]+>/i }
951
- .reject {|o| safe_name(o) =~ /^Veracode/ }
952
- .reject {|o| safe_name(o) =~ /^EmptyRails/ }
953
- .reject {|o| safe_name(o) =~ /^ActionView::CompiledTemplates$/ }, false)
954
- else
955
- puts "Processing Ruby and Rails classes and modules"
956
- archive(@baseline_modules, false)
957
- add_to_archive "\n# Phase 3 - App disassembly\n"
958
- puts "Processing and disassembling #{APP_NAME} classes and modules"
959
- archive(@modules - @baseline_modules, true)
960
- archive_schema
1066
+ end
961
1067
 
1068
+ rescue Exception => e
1069
+ if $options[:snapshot]
1070
+ log_error e.message
1071
+ log_error e.backtrace.join("\n")
1072
+ else
1073
+ raise
1074
+ end
962
1075
  end
963
1076
 
964
1077
  ## /phase 3 - require app
@@ -1,4 +1,4 @@
1
1
  module Veracode
2
- VERSION = '1.0.0.alpha15'
3
- ARCHIVE_VERSION = '2012-07-04'
2
+ VERSION = '1.0.0'
3
+ ARCHIVE_VERSION = '2020-06-29'
4
4
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: veracode
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.alpha15
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Veracode
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-17 00:00:00.000000000 Z
11
+ date: 2020-08-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.0'
19
+ version: '1.3'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.0'
26
+ version: '1.3'
27
27
  description: Prepares your Ruby on Rails app for submission to Veracode.
28
28
  email: devcontact@veracode.com
29
29
  executables:
@@ -39,7 +39,7 @@ files:
39
39
  homepage: http://veracode.com/
40
40
  licenses: []
41
41
  metadata: {}
42
- post_install_message:
42
+ post_install_message:
43
43
  rdoc_options: []
44
44
  require_paths:
45
45
  - lib
@@ -50,13 +50,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
50
50
  version: 1.9.3.0
51
51
  required_rubygems_version: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ">"
53
+ - - ">="
54
54
  - !ruby/object:Gem::Version
55
- version: 1.3.1
55
+ version: '0'
56
56
  requirements: []
57
- rubyforge_project:
58
- rubygems_version: 2.7.8
59
- signing_key:
57
+ rubygems_version: 3.1.2
58
+ signing_key:
60
59
  specification_version: 4
61
60
  summary: Command line tool for preparing your Ruby on Rails app for submission to
62
61
  Veracode