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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +41 -18
- data/LICENSE.txt +1 -1
- data/README.md +153 -85
- data/app/controllers/mailkick/subscriptions_controller.rb +38 -20
- data/app/models/mailkick/opt_out.rb +1 -1
- data/app/models/mailkick/subscription.rb +9 -0
- data/app/views/mailkick/subscriptions/show.html.erb +1 -1
- data/lib/generators/mailkick/install_generator.rb +4 -21
- data/lib/generators/mailkick/templates/install.rb.tt +11 -0
- data/lib/mailkick.rb +23 -69
- data/lib/mailkick/engine.rb +0 -4
- data/lib/mailkick/legacy.rb +70 -0
- data/lib/mailkick/model.rb +11 -21
- data/lib/mailkick/service.rb +1 -16
- data/lib/mailkick/service/aws_ses.rb +47 -0
- data/lib/mailkick/service/postmark.rb +41 -0
- data/lib/mailkick/service/sendgrid.rb +4 -1
- data/lib/mailkick/service/sendgrid_v2.rb +52 -0
- data/lib/mailkick/url_helper.rb +8 -0
- data/lib/mailkick/version.rb +1 -1
- metadata +20 -184
- data/.gitignore +0 -25
- data/.travis.yml +0 -16
- data/Gemfile +0 -6
- data/Rakefile +0 -9
- data/app/helpers/mailkick/url_helper.rb +0 -15
- data/lib/generators/mailkick/templates/install.rb +0 -14
- data/mailkick.gemspec +0 -32
- data/test/gemfiles/actionmailer42.gemfile +0 -6
- data/test/gemfiles/actionmailer50.gemfile +0 -6
- data/test/gemfiles/actionmailer51.gemfile +0 -6
- data/test/internal/app/mailers/user_mailer.rb +0 -7
- data/test/internal/app/models/user.rb +0 -3
- data/test/internal/app/views/user_mailer/welcome.html.erb +0 -1
- data/test/internal/app/views/user_mailer/welcome.text.erb +0 -1
- data/test/internal/config/database.yml +0 -3
- data/test/internal/db/schema.rb +0 -16
- data/test/mailkick_test.rb +0 -29
- 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
data/Rakefile
DELETED
@@ -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 +0,0 @@
|
|
1
|
-
<p><%= mailkick_unsubscribe_url %></p>
|
@@ -1 +0,0 @@
|
|
1
|
-
Unsubscribe: <%= mailkick_unsubscribe_url %>
|
data/test/internal/db/schema.rb
DELETED
@@ -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
|
data/test/mailkick_test.rb
DELETED
@@ -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
|