veracode 1.0.0.alpha15 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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