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