recoil 0.0.6 → 0.1.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
  SHA1:
3
- metadata.gz: cb64222977c91bad7d4104e48d59e385679612d5
4
- data.tar.gz: 8f70210112b5093ac1b9c82250dc7eca893db8f8
3
+ metadata.gz: 87e82d8f7f24b7d3335c5bd3e7291f1ff80493c9
4
+ data.tar.gz: dc33eaacc67cd5ce873b4ce15a4d64727a03eda4
5
5
  SHA512:
6
- metadata.gz: ab057346614e471fc209c2904dfe68ea2ad5c05c309f187a31398660f3a4126590b409877c84fe2dfda9efea0c5673ec3ab2b27db5dea83556768adf629f00eb
7
- data.tar.gz: 4196182ae4f044f63e865394a6d1606d6449b9ab08ccf393805743201c72fc7e4baa81ef3f58fd84b2b20425d0c4dd1a961ad0c9387833ed04b9ca763d637227
6
+ metadata.gz: 5d4757afa6e0e1923eb3de8f1a191d22b69283bf0cee1c0c1b78680195db9fd8300fc9c8d7f649cbdccee7dfe23e4c7caa203a8d6971106eb12910662feb3c1b
7
+ data.tar.gz: d5e023713d948071fd7b0abe3119b88e1673e0033e6f2e4b0199e080712ab3754e4fc4d058335ab931211e3cb159372f06f1dd17fba7595c5387fbb626cbb976
data/.rubocop.yml ADDED
@@ -0,0 +1,99 @@
1
+ require: rubocop-rspec
2
+
3
+ AllCops:
4
+ Exclude:
5
+ - bin/**/*
6
+ - spec/dummy/**/*
7
+ RunRailsCops: true
8
+
9
+ Style/CollectionMethods:
10
+ Enabled: true
11
+ PreferredMethods:
12
+ collect: 'map'
13
+ collect!: 'map!'
14
+ inject: 'inject'
15
+ detect: 'find'
16
+ find_all: 'select'
17
+
18
+ Style/StringLiterals:
19
+ EnforcedStyle: single_quotes
20
+
21
+ Style/Documentation:
22
+ Enabled: false
23
+
24
+ Style/GuardClause:
25
+ Enabled: false
26
+
27
+ Style/IfUnlessModifier:
28
+ MaxLineLength: 50
29
+
30
+ Style/PredicateName:
31
+ Enabled: false
32
+
33
+ Style/SignalException:
34
+ EnforcedStyle: only_raise
35
+
36
+ Style/AlignParameters:
37
+ EnforcedStyle: with_fixed_indentation
38
+
39
+ Style/TrivialAccessors:
40
+ IgnoreClassMethods: true
41
+
42
+ Lint/UselessAssignment:
43
+ Enabled: false
44
+
45
+ Metrics/LineLength:
46
+ Max: 403
47
+
48
+ Style/ClassVars:
49
+ Enabled: false
50
+
51
+ # Avoid chaining a method call on a do...end block.
52
+ Style/MethodCalledOnDoEndBlock:
53
+ Enabled: true
54
+
55
+ # Use %i or %I for arrays of symbols
56
+ Style/SymbolArray:
57
+ Enabled: true
58
+
59
+ # Consider `method *args` ambiguous and require `method(*args)`. The former is
60
+ # fine so disable this rule by default.
61
+ Lint/AmbiguousOperator:
62
+ Enabled: false
63
+
64
+ # We are all responsible adults. We know when we mean to write `if a = 5` and when
65
+ # we mean to write `if a == 5`.
66
+ Lint/AssignmentInCondition:
67
+ Enabled: false
68
+
69
+ # Prefer alias_method over alias. Disable because alias is fine.
70
+ Style/Alias:
71
+ Enabled: false
72
+
73
+ # Disallow the case equality operator (===). Disable because this is a useful and
74
+ # perfectly acceptable practice.
75
+ Style/CaseEquality:
76
+ Enabled: false
77
+
78
+ # Ensure multi-line blocks use `do/end` and single-line blocks use `{/}` as
79
+ # delimiters. This is fine rule, except in case of RSpec tests, where the
80
+ # `expect { ... }.to` is idiomatically written across multiple lines. Disable
81
+ # only in specs.
82
+ Style/BlockDelimiters:
83
+ Exclude:
84
+ - spec/**/*_spec.rb
85
+
86
+ # Ensure short conditionals are written on a single line. The only exception
87
+ # here is Rails initializers, which sometimes have entire blocks of code with a
88
+ # `if defined?` modifier, which is acceptable.
89
+ Style/IfUnlessModifier:
90
+ Exclude:
91
+ - 'config/initializers/*'
92
+
93
+ # The top-level `describe` call should reference a class or module that is
94
+ # under test. This is not the case in some kinds of integration tests that are
95
+ # not tied to a particular class or module. Disable this cop in those cases.
96
+ RSpec/DescribeClass:
97
+ Exclude:
98
+ - spec/requests/**/*
99
+ - spec/features/**/*
data/.travis.yml ADDED
@@ -0,0 +1,11 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 2.1.6
5
+ - 2.2.2
6
+ env:
7
+ - COVERAGE=true
8
+ script:
9
+ - ./bin/rubocop
10
+ - ./bin/brakeman
11
+ - ./bin/rspec
data/README.md CHANGED
@@ -1,5 +1,6 @@
1
1
  # Recoil
2
2
  [![Gem Version](https://badge.fury.io/rb/recoil.svg)](http://badge.fury.io/rb/recoil)
3
+ [![Build Status](https://travis-ci.org/brightin/recoil.svg?branch=master)](https://travis-ci.org/brightin/recoil)
3
4
 
4
5
  Rails delivery method. Send via Amazon SES, but with local blacklist.
5
6
 
data/Rakefile CHANGED
@@ -6,14 +6,11 @@ end
6
6
 
7
7
  require 'rdoc/task'
8
8
 
9
- APP_RAKEFILE = File.expand_path("../spec/dummy/Rakefile", __FILE__)
9
+ APP_RAKEFILE = File.expand_path('../spec/dummy/Rakefile', __FILE__)
10
10
  load 'rails/tasks/engine.rake'
11
11
 
12
-
13
12
  load 'rails/tasks/statistics.rake'
14
13
 
15
-
16
-
17
14
  Bundler::GemHelper.install_tasks
18
15
 
19
16
  require 'rake/testtask'
@@ -25,5 +22,4 @@ Rake::TestTask.new(:test) do |t|
25
22
  t.verbose = false
26
23
  end
27
24
 
28
-
29
25
  task default: :test
data/bin/brakeman ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'brakeman' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('brakeman', 'brakeman')
data/bin/rspec CHANGED
File without changes
data/bin/rubocop ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # This file was generated by Bundler.
4
+ #
5
+ # The application 'rubocop' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'pathname'
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
11
+ Pathname.new(__FILE__).realpath)
12
+
13
+ require 'rubygems'
14
+ require 'bundler/setup'
15
+
16
+ load Gem.bin_path('rubocop', 'rubocop')
data/bin/setup ADDED
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env ruby
2
+ require 'pathname'
3
+
4
+ APP_ROOT = Pathname.new File.expand_path('../../', __FILE__)
5
+
6
+ Dir.chdir APP_ROOT do
7
+ puts "== Installing dependencies =="
8
+ system "gem install bundler --conservative"
9
+ system "bundle check || bundle install"
10
+
11
+ puts "\n== Preparing database =="
12
+ system "bin/rake db:setup"
13
+ end
data/lib/recoil.rb CHANGED
@@ -5,7 +5,7 @@ require 'recoil/message'
5
5
 
6
6
  module Recoil
7
7
  mattr_accessor :blacklist_threshold
8
- @@blacklist_threshold = ->(record) { record.bounces > 3 }
8
+ @@blacklist_threshold = ->(scope) { scope.where('created_at > ?', 2.weeks.ago).count > 10 }
9
9
 
10
10
  def self.setup
11
11
  yield self
data/lib/recoil/email.rb CHANGED
@@ -1,11 +1,17 @@
1
1
  module Recoil
2
- Email = Struct.new(:bounces) do
3
- def self.blacklisted?(email)
4
- new(Bounce.where(email: email).count).blacklisted?
2
+ Email = Struct.new(:email) do
3
+ def blacklisted?
4
+ Recoil.blacklist_threshold.call(scope)
5
5
  end
6
6
 
7
- def blacklisted?
8
- Recoil.blacklist_threshold.call(self)
7
+ def to_s
8
+ email
9
+ end
10
+
11
+ private
12
+
13
+ def scope
14
+ Bounce.where(email: email)
9
15
  end
10
16
  end
11
17
  end
@@ -1,7 +1,7 @@
1
1
  module Recoil
2
2
  class Interceptor
3
3
  def self.delivering_email(message)
4
- if message.to.any? { |email| Email.blacklisted?(email) }
4
+ if message.to.any? { |email| Email.new(email).blacklisted? }
5
5
  message.perform_deliveries = false
6
6
  end
7
7
  end
@@ -1,3 +1,3 @@
1
1
  module Recoil
2
- VERSION = "0.0.6"
2
+ VERSION = '0.1.0'
3
3
  end
data/recoil.gemspec CHANGED
@@ -4,24 +4,29 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'recoil/version'
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = "recoil"
7
+ s.name = 'recoil'
8
8
  s.version = Recoil::VERSION
9
- s.authors = ["Brightin"]
10
- s.email = ["developers@brightin.nl"]
9
+ s.authors = ['Brightin']
10
+ s.email = ['developers@brightin.nl']
11
11
  s.summary = 'Send emails with Amazon SES with automatic blacklisting'
12
12
  s.description = 'Send emails with Amazon SES with automatic blacklisting'
13
- s.homepage = "http://www.brightin.nl"
14
- s.license = "MIT"
13
+ s.homepage = 'http://www.brightin.nl'
14
+ s.license = 'MIT'
15
15
 
16
16
  s.files = `git ls-files -z`.split("\x0")
17
17
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
18
- s.require_paths = ["lib"]
18
+ s.require_paths = ['lib']
19
19
 
20
20
  s.add_dependency 'rails', '>= 4.0'
21
- s.add_dependency 'aws-sdk', '~> 1.60'
22
- s.add_development_dependency "rspec", "~> 3.2.0"
23
- s.add_development_dependency "rspec-rails"
24
- s.add_development_dependency "sqlite3"
25
- s.add_development_dependency "vcr", "~> 2.9.0"
26
- s.add_development_dependency "webmock", "~> 1.20.0"
21
+ s.add_dependency 'aws-sdk', '< 2'
22
+
23
+ s.add_development_dependency 'brakeman'
24
+ s.add_development_dependency 'rspec'
25
+ s.add_development_dependency 'rspec-rails'
26
+ s.add_development_dependency 'rubocop'
27
+ s.add_development_dependency 'rubocop-rspec'
28
+ s.add_development_dependency 'simplecov'
29
+ s.add_development_dependency 'sqlite3'
30
+ s.add_development_dependency 'vcr', '~> 2.9.0'
31
+ s.add_development_dependency 'webmock', '~> 1.20.0'
27
32
  end
@@ -2,26 +2,33 @@ require 'spec_helper'
2
2
 
3
3
  module Recoil
4
4
  RSpec.describe Email do
5
- describe "#blacklisted?" do
6
- it 'is blackisted depending on the threshold' do
7
- original_threshold = Recoil.blacklist_threshold
5
+ subject(:email) { Email.new('example@example.com') }
6
+
7
+ def create_bounce(created_at = nil)
8
+ Bounce.create!(email: email.to_s, created_at: created_at)
9
+ end
10
+
11
+ describe '.blacklisted?' do
12
+ it 'defaults to a blacklist emails with more than 10 bounces in the last two weeks' do
13
+ 10.times { create_bounce }
14
+ expect(email).not_to be_blacklisted
8
15
 
9
- Recoil.setup do |c|
10
- c.blacklist_threshold = ->(r) { r.bounces > 3 }
11
- end
16
+ create_bounce(3.weeks.ago)
17
+ create_bounce(3.weeks.ago)
12
18
 
13
- expect(Email.new(2)).not_to be_blacklisted
14
- expect(Email.new(4)).to be_blacklisted
19
+ expect(email).not_to be_blacklisted
20
+
21
+ create_bounce
22
+ expect(email).to be_blacklisted
23
+ end
24
+
25
+ it 'is configurable via the recoil config' do
26
+ original_threshold = Recoil.blacklist_threshold
15
27
 
16
- Recoil.setup do |c|
17
- c.blacklist_threshold = ->(r) { true }
18
- end
19
- expect(Email.new(2)).to be_blacklisted
20
- expect(Email.new(4)).to be_blacklisted
28
+ Recoil.blacklist_threshold = ->(_scope) { true }
29
+ expect(email).to be_blacklisted
21
30
 
22
- Recoil.setup do |c|
23
- c.blacklist_threshold = original_threshold
24
- end
31
+ Recoil.blacklist_threshold = original_threshold
25
32
  end
26
33
  end
27
34
  end
@@ -4,15 +4,15 @@ require 'recoil/message/notification'
4
4
  RSpec.describe Recoil::Message::Notification do
5
5
  it 'performs a http get on the url' do
6
6
  message = {
7
- "Type" => "Notification",
8
- "MessageId" => "id",
9
- "TopicArn" => "arn:aws:sns:",
10
- "Message" => "{\"notificationType\":\"Bounce\",\"bounce\":{\"bounceSubType\":\"Undetermined\",\"bounceType\":\"Undetermined\",\"bouncedRecipients\":[{\"emailAddress\":\"example@example.com\"}],\"timestamp\":\"2015-03-05T13:36:37.000Z\",\"feedbackId\":\"ID\"},\"mail\":{\"timestamp\":\"2015-03-05T13:36:34.000Z\",\"destination\":[\"example@example.com\"],\"messageId\":\"ID\",\"source\":\"SES\"}}",
11
- "Timestamp" => "2015-03-05T13:36:39.002Z",
12
- "SignatureVersion" => "1",
13
- "Signature" => "Sig",
14
- "SigningCertURL" => "https",
15
- "UnsubscribeURL" => "https"
7
+ 'Type' => 'Notification',
8
+ 'MessageId' => 'id',
9
+ 'TopicArn' => 'arn:aws:sns:',
10
+ 'Message' => "{\"notificationType\":\"Bounce\",\"bounce\":{\"bounceSubType\":\"Undetermined\",\"bounceType\":\"Undetermined\",\"bouncedRecipients\":[{\"emailAddress\":\"example@example.com\"}],\"timestamp\":\"2015-03-05T13:36:37.000Z\",\"feedbackId\":\"ID\"},\"mail\":{\"timestamp\":\"2015-03-05T13:36:34.000Z\",\"destination\":[\"example@example.com\"],\"messageId\":\"ID\",\"source\":\"SES\"}}",
11
+ 'Timestamp' => '2015-03-05T13:36:39.002Z',
12
+ 'SignatureVersion' => '1',
13
+ 'Signature' => 'Sig',
14
+ 'SigningCertURL' => 'https',
15
+ 'UnsubscribeURL' => 'https'
16
16
  }
17
17
  expect(Recoil::Bounce).to receive(:create!).with(
18
18
  email: 'example@example.com',
@@ -2,20 +2,20 @@ require 'spec_helper'
2
2
 
3
3
  RSpec.describe 'Receive notification', type: :request do
4
4
  it 'adds notifications to the database' do
5
- body = {
6
- "Type" => "Notification",
7
- "MessageId" => "id",
8
- "TopicArn" => "arn:aws:sns:",
9
- "Message" => "{\"notificationType\":\"Bounce\",\"bounce\":{\"bounceSubType\":\"Undetermined\",\"bounceType\":\"Undetermined\",\"bouncedRecipients\":[{\"emailAddress\":\"example@example.com\"}],\"timestamp\":\"2015-03-05T13:36:37.000Z\",\"feedbackId\":\"ID\"},\"mail\":{\"timestamp\":\"2015-03-05T13:36:34.000Z\",\"destination\":[\"example@example.com\"],\"messageId\":\"ID\",\"source\":\"SES\"}}",
10
- "Timestamp" => "2015-03-05T13:36:39.002Z",
11
- "SignatureVersion" => "1",
12
- "Signature" => "Sig",
13
- "SigningCertURL" => "https",
14
- "UnsubscribeURL" => "https"
5
+ body = {
6
+ 'Type' => 'Notification',
7
+ 'MessageId' => 'id',
8
+ 'TopicArn' => 'arn:aws:sns:',
9
+ 'Message' => "{\"notificationType\":\"Bounce\",\"bounce\":{\"bounceSubType\":\"Undetermined\",\"bounceType\":\"Undetermined\",\"bouncedRecipients\":[{\"emailAddress\":\"example@example.com\"}],\"timestamp\":\"2015-03-05T13:36:37.000Z\",\"feedbackId\":\"ID\"},\"mail\":{\"timestamp\":\"2015-03-05T13:36:34.000Z\",\"destination\":[\"example@example.com\"],\"messageId\":\"ID\",\"source\":\"SES\"}}",
10
+ 'Timestamp' => '2015-03-05T13:36:39.002Z',
11
+ 'SignatureVersion' => '1',
12
+ 'Signature' => 'Sig',
13
+ 'SigningCertURL' => 'https',
14
+ 'UnsubscribeURL' => 'https'
15
15
  }
16
16
 
17
17
  expect {
18
- post '/ses', body
18
+ post '/ses', body.to_json
19
19
  }.to change(Recoil::Bounce, :count).by(1)
20
20
 
21
21
  expect(Recoil::Bounce.last.email).to eq 'example@example.com'
data/spec/spec_helper.rb CHANGED
@@ -1,17 +1,28 @@
1
- ENV["RAILS_ENV"] = "test"
1
+ ENV['RAILS_ENV'] = 'test'
2
2
  ENGINE_RAILS_ROOT = File.join(File.dirname(__FILE__), '../')
3
3
 
4
- require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
- ActiveRecord::Migrator.migrations_paths = [File.expand_path("../../test/dummy/db/migrate", __FILE__)]
4
+ if ENV['COVERAGE']
5
+ require 'simplecov'
6
+ SimpleCov.start do
7
+ minimum_coverage 90
8
+ add_filter '/spec/'
9
+ end
10
+ end
11
+
12
+ require File.expand_path('../dummy/config/environment.rb', __FILE__)
13
+ ActiveRecord::Migrator.migrations_paths = [File.expand_path('../../test/dummy/db/migrate', __FILE__)]
6
14
  ActiveRecord::Migrator.migrations_paths << File.expand_path('../../db/migrate', __FILE__)
7
15
  require 'vcr'
8
16
  require 'rspec/rails'
9
17
 
18
+ ActiveRecord::Migration.maintain_test_schema!
19
+
10
20
  RSpec.configure do |c|
11
21
  c.expect_with :rspec do |expectations|
12
22
  expectations.include_chain_clauses_in_custom_matcher_descriptions = true
13
23
  end
14
24
 
25
+ c.use_transactional_fixtures = true
15
26
  c.filter_run :focus
16
27
  c.run_all_when_everything_filtered = true
17
28
 
@@ -19,9 +30,7 @@ RSpec.configure do |c|
19
30
 
20
31
  c.warnings = true
21
32
 
22
- if c.files_to_run.one?
23
- c.default_formatter = 'doc'
24
- end
33
+ c.default_formatter = 'doc' if c.files_to_run.one?
25
34
 
26
35
  c.order = :random
27
36
 
@@ -29,7 +38,7 @@ RSpec.configure do |c|
29
38
  end
30
39
 
31
40
  VCR.configure do |c|
32
- c.cassette_library_dir = "spec/fixtures/vcr_cassettes"
41
+ c.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
33
42
  c.hook_into :webmock
34
43
  c.configure_rspec_metadata!
35
44
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: recoil
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brightin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-01 00:00:00.000000000 Z
11
+ date: 2015-07-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -28,30 +28,44 @@ dependencies:
28
28
  name: aws-sdk
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - "<"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.60'
33
+ version: '2'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - "<"
39
+ - !ruby/object:Gem::Version
40
+ version: '2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: brakeman
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
39
46
  - !ruby/object:Gem::Version
40
- version: '1.60'
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rspec
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - "~>"
59
+ - - ">="
46
60
  - !ruby/object:Gem::Version
47
- version: 3.2.0
61
+ version: '0'
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - "~>"
66
+ - - ">="
53
67
  - !ruby/object:Gem::Version
54
- version: 3.2.0
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rspec-rails
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +80,48 @@ dependencies:
66
80
  - - ">="
67
81
  - !ruby/object:Gem::Version
68
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop-rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: simplecov
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
69
125
  - !ruby/object:Gem::Dependency
70
126
  name: sqlite3
71
127
  requirement: !ruby/object:Gem::Requirement
@@ -117,14 +173,19 @@ extra_rdoc_files: []
117
173
  files:
118
174
  - ".gitignore"
119
175
  - ".rspec"
176
+ - ".rubocop.yml"
177
+ - ".travis.yml"
120
178
  - Gemfile
121
179
  - LICENSE.txt
122
180
  - README.md
123
181
  - Rakefile
124
182
  - app/controllers/recoil/notifications_controller.rb
125
183
  - app/models/recoil/bounce.rb
184
+ - bin/brakeman
126
185
  - bin/rails
127
186
  - bin/rspec
187
+ - bin/rubocop
188
+ - bin/setup
128
189
  - config/routes.rb
129
190
  - db/migrate/20150305152728_add_emails_table.rb
130
191
  - lib/recoil.rb
@@ -173,7 +234,6 @@ files:
173
234
  - spec/dummy/config/locales/en.yml
174
235
  - spec/dummy/config/routes.rb
175
236
  - spec/dummy/config/secrets.yml
176
- - spec/dummy/db/development.sqlite3
177
237
  - spec/dummy/db/schema.rb
178
238
  - spec/dummy/lib/assets/.keep
179
239
  - spec/dummy/public/404.html
@@ -248,7 +308,6 @@ test_files:
248
308
  - spec/dummy/config/locales/en.yml
249
309
  - spec/dummy/config/routes.rb
250
310
  - spec/dummy/config/secrets.yml
251
- - spec/dummy/db/development.sqlite3
252
311
  - spec/dummy/db/schema.rb
253
312
  - spec/dummy/lib/assets/.keep
254
313
  - spec/dummy/public/404.html