mailkick 0.3.1 → 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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +41 -18
  3. data/LICENSE.txt +1 -1
  4. data/README.md +153 -85
  5. data/app/controllers/mailkick/subscriptions_controller.rb +38 -20
  6. data/app/models/mailkick/opt_out.rb +1 -1
  7. data/app/models/mailkick/subscription.rb +9 -0
  8. data/app/views/mailkick/subscriptions/show.html.erb +1 -1
  9. data/lib/generators/mailkick/install_generator.rb +4 -21
  10. data/lib/generators/mailkick/templates/install.rb.tt +11 -0
  11. data/lib/mailkick.rb +23 -69
  12. data/lib/mailkick/engine.rb +0 -4
  13. data/lib/mailkick/legacy.rb +70 -0
  14. data/lib/mailkick/model.rb +11 -21
  15. data/lib/mailkick/service.rb +1 -16
  16. data/lib/mailkick/service/aws_ses.rb +47 -0
  17. data/lib/mailkick/service/postmark.rb +41 -0
  18. data/lib/mailkick/service/sendgrid.rb +4 -1
  19. data/lib/mailkick/service/sendgrid_v2.rb +52 -0
  20. data/lib/mailkick/url_helper.rb +8 -0
  21. data/lib/mailkick/version.rb +1 -1
  22. metadata +20 -184
  23. data/.gitignore +0 -25
  24. data/.travis.yml +0 -16
  25. data/Gemfile +0 -6
  26. data/Rakefile +0 -9
  27. data/app/helpers/mailkick/url_helper.rb +0 -15
  28. data/lib/generators/mailkick/templates/install.rb +0 -14
  29. data/mailkick.gemspec +0 -32
  30. data/test/gemfiles/actionmailer42.gemfile +0 -6
  31. data/test/gemfiles/actionmailer50.gemfile +0 -6
  32. data/test/gemfiles/actionmailer51.gemfile +0 -6
  33. data/test/internal/app/mailers/user_mailer.rb +0 -7
  34. data/test/internal/app/models/user.rb +0 -3
  35. data/test/internal/app/views/user_mailer/welcome.html.erb +0 -1
  36. data/test/internal/app/views/user_mailer/welcome.text.erb +0 -1
  37. data/test/internal/config/database.yml +0 -3
  38. data/test/internal/db/schema.rb +0 -16
  39. data/test/mailkick_test.rb +0 -29
  40. data/test/test_helper.rb +0 -18
data/.travis.yml DELETED
@@ -1,16 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.4.2
4
- sudo: false
5
- script: bundle exec rake test
6
- before_script:
7
- - gem install bundler
8
- notifications:
9
- email:
10
- on_success: never
11
- on_failure: change
12
- gemfile:
13
- - Gemfile
14
- - test/gemfiles/actionmailer51.gemfile
15
- - test/gemfiles/actionmailer50.gemfile
16
- - test/gemfiles/actionmailer42.gemfile
data/Gemfile DELETED
@@ -1,6 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- # Specify your gem's dependencies in mailkick.gemspec
4
- gemspec
5
-
6
- gem "actionmailer", "~> 5.2.0"
data/Rakefile DELETED
@@ -1,9 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
3
-
4
- task default: :test
5
- Rake::TestTask.new do |t|
6
- t.libs << "test"
7
- t.pattern = "test/**/*_test.rb"
8
- t.warning = false
9
- end
@@ -1,15 +0,0 @@
1
- module Mailkick
2
- module UrlHelper
3
- def mailkick_unsubscribe_url(email: nil, user: nil, list: nil, **options)
4
- email ||= controller.try(:message).try(:to).try(:first)
5
-
6
- Mailkick::Engine.routes.url_helpers.url_for(
7
- (ActionMailer::Base.default_url_options || {}).merge(options).merge(
8
- controller: "mailkick/subscriptions",
9
- action: "unsubscribe",
10
- id: Mailkick.generate_token(email, user: user, list: list)
11
- )
12
- )
13
- end
14
- end
15
- end
@@ -1,14 +0,0 @@
1
- class <%= migration_class_name %> < ActiveRecord::Migration<%= migration_version %>
2
- def change
3
- create_table :mailkick_opt_outs do |t|
4
- t.string :email
5
- t.references :user, polymorphic: true
6
- t.boolean :active, null: false, default: true
7
- t.string :reason
8
- t.string :list
9
- t.timestamps
10
- end
11
-
12
- add_index :mailkick_opt_outs, :email
13
- end
14
- end
data/mailkick.gemspec DELETED
@@ -1,32 +0,0 @@
1
- # coding: utf-8
2
- lib = File.expand_path("../lib", __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require "mailkick/version"
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "mailkick"
8
- spec.version = Mailkick::VERSION
9
- spec.authors = ["Andrew Kane"]
10
- spec.email = ["andrew@chartkick.com"]
11
- spec.summary = "Email subscriptions made easy"
12
- spec.homepage = "https://github.com/ankane/mailkick"
13
- spec.license = "MIT"
14
-
15
- spec.files = `git ls-files -z`.split("\x0")
16
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
- spec.require_paths = ["lib"]
19
-
20
- spec.add_dependency "activesupport", ">= 4.2"
21
-
22
- spec.add_development_dependency "bundler"
23
- spec.add_development_dependency "gibbon", ">= 2"
24
- spec.add_development_dependency "mailgun-ruby"
25
- spec.add_development_dependency "mandrill-api"
26
- spec.add_development_dependency "minitest"
27
- spec.add_development_dependency "rake"
28
- spec.add_development_dependency "sendgrid_toolkit"
29
- spec.add_development_dependency "combustion"
30
- spec.add_development_dependency "rails"
31
- spec.add_development_dependency "sqlite3"
32
- end
@@ -1,6 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- # Specify your gem's dependencies in mailkick.gemspec
4
- gemspec path: "../../"
5
-
6
- gem "actionmailer", "~> 4.2.0"
@@ -1,6 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- # Specify your gem's dependencies in mailkick.gemspec
4
- gemspec path: "../../"
5
-
6
- gem "actionmailer", "~> 5.0.0"
@@ -1,6 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- # Specify your gem's dependencies in mailkick.gemspec
4
- gemspec path: "../../"
5
-
6
- gem "actionmailer", "~> 5.1.0"
@@ -1,7 +0,0 @@
1
- class UserMailer < ActionMailer::Base
2
- default from: "from@example.com"
3
-
4
- def welcome
5
- mail to: "test@example.org", subject: "Hello"
6
- end
7
- end
@@ -1,3 +0,0 @@
1
- class User < ActiveRecord::Base
2
- mailkick_user
3
- end
@@ -1 +0,0 @@
1
- <p><%= mailkick_unsubscribe_url %></p>
@@ -1 +0,0 @@
1
- Unsubscribe: <%= mailkick_unsubscribe_url %>
@@ -1,3 +0,0 @@
1
- test:
2
- adapter: sqlite3
3
- database: db/combustion_test.sqlite
@@ -1,16 +0,0 @@
1
- ActiveRecord::Schema.define do
2
- create_table :mailkick_opt_outs do |t|
3
- t.string :email
4
- t.references :user, polymorphic: true
5
- t.boolean :active, null: false, default: true
6
- t.string :reason
7
- t.string :list
8
- t.timestamps
9
- end
10
-
11
- add_index :mailkick_opt_outs, :email
12
-
13
- create_table :users do |t|
14
- t.string :email
15
- end
16
- end
@@ -1,29 +0,0 @@
1
- require_relative "test_helper"
2
-
3
- class MailkickTest < Minitest::Test
4
- def test_unsubscribe_url
5
- message = UserMailer.welcome.deliver_now
6
- html_body = message.html_part.body.to_s
7
- assert_includes html_body, "unsubscribe"
8
- text_body = message.text_part.body.to_s
9
- assert_includes text_body, "unsubscribe"
10
- end
11
-
12
- def test_opt_out
13
- email = "test2@example.org"
14
- user = User.create!(email: email)
15
-
16
- Mailkick.opt_out(email: email, user: user)
17
-
18
- opt_outs = Mailkick::OptOut.all.to_a
19
- assert_equal 1, opt_outs.size
20
-
21
- opt_out = opt_outs.first
22
- assert_equal email, opt_out.email
23
- assert_equal user, opt_out.user
24
-
25
- assert user.opted_out?
26
- assert_equal 1, User.opted_out.count
27
- assert_equal 0, User.not_opted_out.count
28
- end
29
- end
data/test/test_helper.rb DELETED
@@ -1,18 +0,0 @@
1
- require "bundler/setup"
2
- require "combustion"
3
- Bundler.require(:default)
4
- require "minitest/autorun"
5
- require "minitest/pride"
6
- require "logger"
7
-
8
- Minitest::Test = Minitest::Unit::TestCase unless defined?(Minitest::Test)
9
-
10
- Combustion.path = "test/internal"
11
- Combustion.initialize! :all do
12
- if config.active_record.sqlite3.respond_to?(:represent_boolean_as_integer)
13
- config.active_record.sqlite3.represent_boolean_as_integer = false
14
- end
15
- end
16
-
17
- ActiveRecord::Base.logger = ActiveSupport::Logger.new(STDOUT) if ENV["VERBOSE"]
18
- ActionMailer::Base.delivery_method = :test