bundler-audit 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. data/.gitignore +3 -0
  2. data/.gitmodules +3 -0
  3. data/.travis.yml +4 -0
  4. data/ChangeLog.md +13 -0
  5. data/Gemfile +12 -0
  6. data/README.md +3 -37
  7. data/Rakefile +20 -49
  8. data/bundler-audit.gemspec +7 -0
  9. data/data/ruby-advisory-db/.rspec +1 -0
  10. data/data/ruby-advisory-db/README.md +64 -0
  11. data/data/ruby-advisory-db/gems/actionpack/2012-1099.yml +23 -0
  12. data/data/{bundler/audit/rails → ruby-advisory-db/gems/actionpack}/2012-3424.yml +10 -6
  13. data/data/ruby-advisory-db/gems/actionpack/2012-3463.yml +20 -0
  14. data/data/ruby-advisory-db/gems/actionpack/2012-3465.yml +20 -0
  15. data/data/{bundler/audit/rails → ruby-advisory-db/gems/actionpack}/2013-0156.yml +5 -3
  16. data/data/ruby-advisory-db/gems/activerecord/2012-2660.yml +21 -0
  17. data/data/ruby-advisory-db/gems/activerecord/2012-2661.yml +19 -0
  18. data/data/{bundler/audit/rails → ruby-advisory-db/gems/activerecord}/2013-0155.yml +6 -4
  19. data/data/{bundler/audit/rails → ruby-advisory-db/gems/activerecord}/2013-0276.yml +5 -3
  20. data/data/{bundler/audit/rails → ruby-advisory-db/gems/activerecord}/2013-0277.yml +5 -3
  21. data/data/ruby-advisory-db/gems/activesupport/2012-1098.yml +20 -0
  22. data/data/ruby-advisory-db/gems/activesupport/2012-3464.yml +20 -0
  23. data/data/{bundler/audit/rails → ruby-advisory-db/gems/activesupport}/2013-0333.yml +5 -3
  24. data/data/ruby-advisory-db/gems/devise/2013-0233.yml +18 -0
  25. data/data/ruby-advisory-db/gems/gtk2/2007-6183.yml +18 -0
  26. data/data/{bundler/audit → ruby-advisory-db/gems}/json/2013-0269.yml +4 -2
  27. data/data/ruby-advisory-db/gems/mail/2011-0739.yml +19 -0
  28. data/data/ruby-advisory-db/gems/mail/2012-2139.yml +11 -0
  29. data/data/ruby-advisory-db/gems/mail/2012-2140.yml +11 -0
  30. data/data/ruby-advisory-db/gems/multi_xml/2013-0175.yml +14 -0
  31. data/data/ruby-advisory-db/gems/newrelic_rpm/2013-0284.yml +15 -0
  32. data/data/ruby-advisory-db/gems/nori/2013-0285.yml +17 -0
  33. data/data/ruby-advisory-db/gems/omniauth-oauth2/2012-6134.yml +14 -0
  34. data/data/ruby-advisory-db/gems/rack-cache/2012-267.yml +16 -0
  35. data/data/{bundler/audit → ruby-advisory-db/gems}/rack/2013-0263.yml +9 -8
  36. data/data/ruby-advisory-db/gems/rdoc/2013-0256.yml +25 -0
  37. data/data/ruby-advisory-db/spec/advisory_example.rb +80 -0
  38. data/data/ruby-advisory-db/spec/gems_spec.rb +8 -0
  39. data/data/ruby-advisory-db/spec/spec_helper.rb +1 -0
  40. data/gemspec.yml +1 -6
  41. data/lib/bundler/audit/advisory.rb +13 -1
  42. data/lib/bundler/audit/cli.rb +17 -6
  43. data/lib/bundler/audit/database.rb +1 -30
  44. data/lib/bundler/audit/version.rb +1 -1
  45. data/spec/advisory_spec.rb +1 -1
  46. data/spec/bundle/secure/Gemfile +38 -0
  47. data/spec/bundle/{Gemfile → vuln/Gemfile} +0 -0
  48. data/spec/database_spec.rb +1 -32
  49. data/spec/integration_spec.rb +63 -0
  50. data/spec/spec_helper.rb +14 -1
  51. metadata +68 -112
  52. data/data/bundler/audit/mail/2011-0739.yml +0 -17
  53. data/data/bundler/audit/mail/2012-2139.yml +0 -16
  54. data/data/bundler/audit/mail/2012-2140.yml +0 -13
  55. data/data/bundler/audit/rack-cache/2012-267.yml +0 -14
  56. data/data/bundler/audit/rails/2012-1098.yml +0 -19
  57. data/data/bundler/audit/rails/2012-1099.yml +0 -19
  58. data/data/bundler/audit/rails/2012-2660.yml +0 -17
  59. data/data/bundler/audit/rails/2012-2661.yml +0 -18
  60. data/data/bundler/audit/rails/2012-3463.yml +0 -19
  61. data/data/bundler/audit/rails/2012-3464.yml +0 -18
  62. data/data/bundler/audit/rails/2012-3465.yml +0 -19
  63. data/spec/bundle/Gemfile.lock +0 -92
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'advisory_example'
3
+
4
+ describe "gems" do
5
+ Dir.glob('gems/*/*.yml') do |path|
6
+ include_examples 'Advisory', path
7
+ end
8
+ end
@@ -0,0 +1 @@
1
+ require 'rspec'
data/gemspec.yml CHANGED
@@ -7,9 +7,4 @@ email: postmodern.mod3@gmail.com
7
7
  homepage: https://github.com/postmodern/bundler-audit#readme
8
8
 
9
9
  dependencies:
10
- bundler: ~> 1.0
11
-
12
- development_dependencies:
13
- rspec: ~> 2.4
14
- rubygems-tasks: ~> 0.2
15
- yard: ~> 0.8
10
+ bundler: ~> 1.2
@@ -19,7 +19,8 @@ require 'yaml'
19
19
 
20
20
  module Bundler
21
21
  module Audit
22
- class Advisory < Struct.new(:cve,
22
+ class Advisory < Struct.new(:path,
23
+ :cve,
23
24
  :url,
24
25
  :title,
25
26
  :description,
@@ -45,6 +46,7 @@ module Bundler
45
46
  end
46
47
 
47
48
  return new(
49
+ path,
48
50
  cve,
49
51
  data['url'],
50
52
  data['title'],
@@ -85,6 +87,16 @@ module Bundler
85
87
  end
86
88
  end
87
89
 
90
+ #
91
+ # Converts the advisory to a String.
92
+ #
93
+ # @return [String]
94
+ # The CVE identifier.
95
+ #
96
+ def to_s
97
+ "CVE-#{cve}"
98
+ end
99
+
88
100
  end
89
101
  end
90
102
  end
@@ -32,19 +32,20 @@ module Bundler
32
32
  method_option :verbose, :type => :boolean, :aliases => '-v'
33
33
 
34
34
  def check
35
- environment = Bundler.load
36
35
  database = Database.new
37
36
  vulnerable = false
37
+ lock_file = load_gemfile_lock('Gemfile.lock')
38
38
 
39
- database.check_bundle(environment) do |gem,advisory|
40
- vulnerable = true
41
-
42
- print_advisory gem, advisory
39
+ lock_file.specs.each do |gem|
40
+ database.check_gem(gem) do |advisory|
41
+ vulnerable = true
42
+ print_advisory gem, advisory
43
+ end
43
44
  end
44
45
 
45
46
  if vulnerable
46
47
  say "Unpatched versions found!", :red
47
- return -1
48
+ exit 1
48
49
  else
49
50
  say "No unpatched versions found", :green
50
51
  end
@@ -59,6 +60,10 @@ module Bundler
59
60
 
60
61
  protected
61
62
 
63
+ def load_gemfile_lock(path)
64
+ Bundler::LockfileParser.new(File.read(path))
65
+ end
66
+
62
67
  def print_advisory(gem, advisory)
63
68
  say "Name: ", :red
64
69
  say gem.name
@@ -74,6 +79,7 @@ module Bundler
74
79
  when :low then say "Low"
75
80
  when :medium then say "Medium", :yellow
76
81
  when :high then say "High", [:red, :bold]
82
+ else say "Unknown"
77
83
  end
78
84
 
79
85
  say "URL: ", :red
@@ -102,6 +108,11 @@ module Bundler
102
108
  say
103
109
  end
104
110
 
111
+ def say(string="", color=nil)
112
+ color = nil unless $stdout.tty?
113
+ super(string, color)
114
+ end
115
+
105
116
  end
106
117
  end
107
118
  end
@@ -28,7 +28,7 @@ module Bundler
28
28
  class Database
29
29
 
30
30
  # directory containing advisories
31
- PATH = File.expand_path(File.join(File.dirname(__FILE__),'..','..','..','data','bundler','audit'))
31
+ PATH = File.expand_path(File.join(File.dirname(__FILE__),'..','..','..','data','ruby-advisory-db','gems'))
32
32
 
33
33
  # The path to the advisory database
34
34
  attr_reader :path
@@ -119,35 +119,6 @@ module Bundler
119
119
  end
120
120
  end
121
121
 
122
- #
123
- # Verifies whether the bundled gems are effected by any advisories.
124
- #
125
- # @param [Bundle::Environment] environment
126
- # The bundled gems.
127
- #
128
- # @yield [gem, advisory]
129
- # If a block is given, each advisory that effects a gem within the
130
- # bundle will be passed.
131
- #
132
- # @yieldparam [Gem::Specification] gem
133
- # The gem effected by the advisory.
134
- #
135
- # @yieldparam [Advisory] advisory
136
- # An advisory that effects a gem within the bundle.
137
- #
138
- # @return [Enumerator]
139
- # If no block is given, an Enumerator will be returned.
140
- #
141
- def check_bundle(environment)
142
- return enum_for(__method__,environment) unless block_given?
143
-
144
- environment.gems.each do |gem|
145
- check_gem(gem) do |advisory|
146
- yield gem, advisory
147
- end
148
- end
149
- end
150
-
151
122
  #
152
123
  # The number of advisories within the database.
153
124
  #
@@ -18,6 +18,6 @@
18
18
  module Bundler
19
19
  module Audit
20
20
  # bundler-audit version
21
- VERSION = "0.1.1"
21
+ VERSION = "0.1.2"
22
22
  end
23
23
  end
@@ -4,7 +4,7 @@ require 'bundler/audit/advisory'
4
4
 
5
5
  describe Bundler::Audit::Advisory do
6
6
  let(:root) { Bundler::Audit::Database::PATH }
7
- let(:gem) { 'rails' }
7
+ let(:gem) { 'actionpack' }
8
8
  let(:cve) { '2013-0156' }
9
9
  let(:path) { File.join(root,gem,"#{cve}.yml") }
10
10
 
@@ -0,0 +1,38 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rails', '3.2.12'
4
+
5
+ # Bundle edge Rails instead:
6
+ # gem 'rails', :git => 'git://github.com/rails/rails.git'
7
+
8
+ gem 'sqlite3'
9
+
10
+
11
+ # Gems used only for assets and not required
12
+ # in production environments by default.
13
+ group :assets do
14
+ # gem 'sass-rails', '~> 3.2.3'
15
+ # gem 'coffee-rails', '~> 3.2.1'
16
+
17
+ # See https://github.com/sstephenson/execjs#readme for more supported runtimes
18
+ # gem 'therubyracer', :platforms => :ruby
19
+
20
+ # gem 'uglifier', '>= 1.0.3'
21
+ end
22
+
23
+ gem 'jquery-rails'
24
+
25
+ # To use ActiveModel has_secure_password
26
+ # gem 'bcrypt-ruby', '~> 3.0.0'
27
+
28
+ # To use Jbuilder templates for JSON
29
+ # gem 'jbuilder'
30
+
31
+ # Use unicorn as the app server
32
+ # gem 'unicorn'
33
+
34
+ # Deploy with Capistrano
35
+ # gem 'capistrano'
36
+
37
+ # To use debugger
38
+ # gem 'debugger'
File without changes
@@ -1,7 +1,5 @@
1
1
  require 'spec_helper'
2
2
  require 'bundler/audit/database'
3
-
4
- require 'bundler'
5
3
  require 'tmpdir'
6
4
 
7
5
  describe Bundler::Audit::Database do
@@ -44,7 +42,7 @@ describe Bundler::Audit::Database do
44
42
  describe "#check_gem" do
45
43
  let(:gem) do
46
44
  Gem::Specification.new do |s|
47
- s.name = 'rails'
45
+ s.name = 'actionpack'
48
46
  s.version = '3.1.9'
49
47
  end
50
48
  end
@@ -71,35 +69,6 @@ describe Bundler::Audit::Database do
71
69
  end
72
70
  end
73
71
 
74
- describe "#check_bundle" do
75
- let(:path) { File.join(File.dirname(__FILE__),'bundle') }
76
- let(:bundle) do
77
- Dir.chdir(path) { Bundler.load }
78
- end
79
-
80
- context "when given a block" do
81
- it "should yield every advisory effecting the bundle" do
82
- advisories = []
83
-
84
- subject.check_bundle(bundle) do |gem,advisory|
85
- advisories << [gem, advisory]
86
- end
87
-
88
- advisories.should_not be_empty
89
- advisories.all? { |gem,advisory|
90
- gem.kind_of?(Gem::Specification) &&
91
- advisory.kind_of?(Bundler::Audit::Advisory)
92
- }.should be_true
93
- end
94
- end
95
-
96
- context "when given no block" do
97
- it "should return an Enumerator" do
98
- subject.check_bundle(bundle).should be_kind_of(Enumerable)
99
- end
100
- end
101
- end
102
-
103
72
  describe "#size" do
104
73
  it { subject.size.should > 0 }
105
74
  end
@@ -0,0 +1,63 @@
1
+ require 'spec_helper'
2
+
3
+ describe "CLI" do
4
+ include Helpers
5
+
6
+ let(:command) do
7
+ File.expand_path(File.join(File.dirname(__FILE__),'..','bin','bundle-audit'))
8
+ end
9
+
10
+ context "when auditing a vulnerable bundle" do
11
+ let(:bundle) { 'vuln' }
12
+ let(:directory) { File.join('spec','bundle',bundle) }
13
+
14
+ subject do
15
+ Dir.chdir(directory) { sh(command, :fail => true) }
16
+ end
17
+
18
+ it "should print a warning" do
19
+ subject.should include("Unpatched versions found!")
20
+ end
21
+
22
+ it "should print advisory information for the vulnerable gems" do
23
+ subject.should include(%{
24
+ Name: actionpack
25
+ Version: 3.2.10
26
+ CVE: 2013-0156
27
+ Criticality: High
28
+ URL: http://osvdb.org/show/osvdb/89026
29
+ Title: Ruby on Rails params_parser.rb Action Pack Type Casting Parameter Parsing Remote Code Execution
30
+ Solution: upgrade to ~> 2.3.15, ~> 3.0.19, ~> 3.1.10, >= 3.2.11
31
+
32
+ Name: activerecord
33
+ Version: 3.2.10
34
+ CVE: 2013-0276
35
+ Criticality: Medium
36
+ URL: http://direct.osvdb.org/show/osvdb/90072
37
+ Title: Ruby on Rails Active Record attr_protected Method Bypass
38
+ Solution: upgrade to ~> 2.3.17, ~> 3.1.11, >= 3.2.12
39
+
40
+ Name: activerecord
41
+ Version: 3.2.10
42
+ CVE: 2013-0155
43
+ Criticality: High
44
+ URL: http://osvdb.org/show/osvdb/89025
45
+ Title: Ruby on Rails Active Record JSON Parameter Parsing Query Bypass
46
+ Solution: upgrade to ~> 2.3.16, ~> 3.0.19, ~> 3.1.10, >= 3.2.11
47
+ }.strip)
48
+ end
49
+ end
50
+
51
+ context "when auditing a secure bundle" do
52
+ let(:bundle) { 'secure' }
53
+ let(:directory) { File.join('spec','bundle',bundle) }
54
+
55
+ subject do
56
+ Dir.chdir(directory) { sh(command) }
57
+ end
58
+
59
+ it "should print nothing when everything is fine" do
60
+ subject.strip.should == "No unpatched versions found"
61
+ end
62
+ end
63
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,18 @@
1
- gem 'rspec', '~> 2.4'
2
1
  require 'rspec'
3
2
  require 'bundler/audit/version'
4
3
 
4
+ module Helpers
5
+ def sh(command, options={})
6
+ Bundler.with_clean_env do
7
+ result = `#{command} 2>&1`
8
+ raise "FAILED #{command}\n#{result}" if $?.success? == !!options[:fail]
9
+ result
10
+ end
11
+ end
12
+
13
+ def decolorize(string)
14
+ string.gsub(/\e\[\d+m/, "")
15
+ end
16
+ end
17
+
5
18
  include Bundler::Audit
metadata CHANGED
@@ -1,122 +1,55 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: bundler-audit
3
- version: !ruby/object:Gem::Version
4
- hash: 25
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 1
10
- version: 0.1.1
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Postmodern
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2013-02-12 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2013-02-18 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: bundler
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
18
+ requirements:
26
19
  - - ~>
27
- - !ruby/object:Gem::Version
28
- hash: 15
29
- segments:
30
- - 1
31
- - 0
32
- version: "1.0"
20
+ - !ruby/object:Gem::Version
21
+ version: '1.2'
33
22
  type: :runtime
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: yard
37
- prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
41
- - - ~>
42
- - !ruby/object:Gem::Version
43
- hash: 27
44
- segments:
45
- - 0
46
- - 8
47
- version: "0.8"
48
- type: :development
49
- version_requirements: *id002
50
- - !ruby/object:Gem::Dependency
51
- name: rubygems-tasks
52
- prerelease: false
53
- requirement: &id003 !ruby/object:Gem::Requirement
54
- none: false
55
- requirements:
56
- - - ~>
57
- - !ruby/object:Gem::Version
58
- hash: 15
59
- segments:
60
- - 0
61
- - 2
62
- version: "0.2"
63
- type: :development
64
- version_requirements: *id003
65
- - !ruby/object:Gem::Dependency
66
- name: rspec
67
23
  prerelease: false
68
- requirement: &id004 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
69
25
  none: false
70
- requirements:
26
+ requirements:
71
27
  - - ~>
72
- - !ruby/object:Gem::Version
73
- hash: 11
74
- segments:
75
- - 2
76
- - 4
77
- version: "2.4"
78
- type: :development
79
- version_requirements: *id004
28
+ - !ruby/object:Gem::Version
29
+ version: '1.2'
80
30
  description: bundler-audit provides patch-level verification for Bundled apps.
81
31
  email: postmodern.mod3@gmail.com
82
- executables:
32
+ executables:
83
33
  - bundle-audit
84
34
  extensions: []
85
-
86
- extra_rdoc_files:
35
+ extra_rdoc_files:
87
36
  - COPYING.txt
88
37
  - ChangeLog.md
89
38
  - README.md
90
- files:
39
+ files:
91
40
  - .document
92
41
  - .gitignore
42
+ - .gitmodules
93
43
  - .rspec
44
+ - .travis.yml
94
45
  - .yardopts
95
46
  - COPYING.txt
96
47
  - ChangeLog.md
48
+ - Gemfile
97
49
  - README.md
98
50
  - Rakefile
99
51
  - bin/bundle-audit
100
52
  - bundler-audit.gemspec
101
- - data/bundler/audit/json/2013-0269.yml
102
- - data/bundler/audit/mail/2011-0739.yml
103
- - data/bundler/audit/mail/2012-2139.yml
104
- - data/bundler/audit/mail/2012-2140.yml
105
- - data/bundler/audit/rack-cache/2012-267.yml
106
- - data/bundler/audit/rack/2013-0263.yml
107
- - data/bundler/audit/rails/2012-1098.yml
108
- - data/bundler/audit/rails/2012-1099.yml
109
- - data/bundler/audit/rails/2012-2660.yml
110
- - data/bundler/audit/rails/2012-2661.yml
111
- - data/bundler/audit/rails/2012-3424.yml
112
- - data/bundler/audit/rails/2012-3463.yml
113
- - data/bundler/audit/rails/2012-3464.yml
114
- - data/bundler/audit/rails/2012-3465.yml
115
- - data/bundler/audit/rails/2013-0155.yml
116
- - data/bundler/audit/rails/2013-0156.yml
117
- - data/bundler/audit/rails/2013-0276.yml
118
- - data/bundler/audit/rails/2013-0277.yml
119
- - data/bundler/audit/rails/2013-0333.yml
120
53
  - gemspec.yml
121
54
  - lib/bundler/audit.rb
122
55
  - lib/bundler/audit/advisory.rb
@@ -125,42 +58,65 @@ files:
125
58
  - lib/bundler/audit/version.rb
126
59
  - spec/advisory_spec.rb
127
60
  - spec/audit_spec.rb
128
- - spec/bundle/Gemfile
129
- - spec/bundle/Gemfile.lock
61
+ - spec/bundle/secure/Gemfile
62
+ - spec/bundle/vuln/Gemfile
130
63
  - spec/database_spec.rb
64
+ - spec/integration_spec.rb
131
65
  - spec/spec_helper.rb
66
+ - data/ruby-advisory-db/.rspec
67
+ - data/ruby-advisory-db/README.md
68
+ - data/ruby-advisory-db/gems/actionpack/2012-1099.yml
69
+ - data/ruby-advisory-db/gems/actionpack/2012-3424.yml
70
+ - data/ruby-advisory-db/gems/actionpack/2012-3463.yml
71
+ - data/ruby-advisory-db/gems/actionpack/2012-3465.yml
72
+ - data/ruby-advisory-db/gems/actionpack/2013-0156.yml
73
+ - data/ruby-advisory-db/gems/activerecord/2012-2660.yml
74
+ - data/ruby-advisory-db/gems/activerecord/2012-2661.yml
75
+ - data/ruby-advisory-db/gems/activerecord/2013-0155.yml
76
+ - data/ruby-advisory-db/gems/activerecord/2013-0276.yml
77
+ - data/ruby-advisory-db/gems/activerecord/2013-0277.yml
78
+ - data/ruby-advisory-db/gems/activesupport/2012-1098.yml
79
+ - data/ruby-advisory-db/gems/activesupport/2012-3464.yml
80
+ - data/ruby-advisory-db/gems/activesupport/2013-0333.yml
81
+ - data/ruby-advisory-db/gems/devise/2013-0233.yml
82
+ - data/ruby-advisory-db/gems/gtk2/2007-6183.yml
83
+ - data/ruby-advisory-db/gems/json/2013-0269.yml
84
+ - data/ruby-advisory-db/gems/mail/2011-0739.yml
85
+ - data/ruby-advisory-db/gems/mail/2012-2139.yml
86
+ - data/ruby-advisory-db/gems/mail/2012-2140.yml
87
+ - data/ruby-advisory-db/gems/multi_xml/2013-0175.yml
88
+ - data/ruby-advisory-db/gems/newrelic_rpm/2013-0284.yml
89
+ - data/ruby-advisory-db/gems/nori/2013-0285.yml
90
+ - data/ruby-advisory-db/gems/omniauth-oauth2/2012-6134.yml
91
+ - data/ruby-advisory-db/gems/rack-cache/2012-267.yml
92
+ - data/ruby-advisory-db/gems/rack/2013-0263.yml
93
+ - data/ruby-advisory-db/gems/rdoc/2013-0256.yml
94
+ - data/ruby-advisory-db/spec/advisory_example.rb
95
+ - data/ruby-advisory-db/spec/gems_spec.rb
96
+ - data/ruby-advisory-db/spec/spec_helper.rb
132
97
  homepage: https://github.com/postmodern/bundler-audit#readme
133
- licenses:
98
+ licenses:
134
99
  - GPLv3
135
100
  post_install_message:
136
101
  rdoc_options: []
137
-
138
- require_paths:
102
+ require_paths:
139
103
  - lib
140
- required_ruby_version: !ruby/object:Gem::Requirement
104
+ required_ruby_version: !ruby/object:Gem::Requirement
141
105
  none: false
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- hash: 3
146
- segments:
147
- - 0
148
- version: "0"
149
- required_rubygems_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ required_rubygems_version: !ruby/object:Gem::Requirement
150
111
  none: false
151
- requirements:
152
- - - ">="
153
- - !ruby/object:Gem::Version
154
- hash: 3
155
- segments:
156
- - 0
157
- version: "0"
112
+ requirements:
113
+ - - ! '>='
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
158
116
  requirements: []
159
-
160
117
  rubyforge_project:
161
- rubygems_version: 1.8.24
118
+ rubygems_version: 1.8.25
162
119
  signing_key:
163
120
  specification_version: 3
164
121
  summary: Patch-level verification for Bundler
165
122
  test_files: []
166
-