DEV Community

Cover image for I built a gem that makes it easy to automatically unsubscribe from emails in Rails.
Steve Polito
Steve Polito

Posted on • Originally published at github.com

I built a gem that makes it easy to automatically unsubscribe from emails in Rails.

Source Code

https://github.com/stevepolitodesign/unsubscribe

Demo

Demo

Docs

πŸ“­ Unsubscribe

Automatically unsubscribe from emails in Rails.

πŸš€ Installation

Add this line to your application's Gemfile:

gem 'unsubscribe' 
Enter fullscreen mode Exit fullscreen mode

And then execute:

$ bundle 
Enter fullscreen mode Exit fullscreen mode

Or install it yourself as:

$ gem install unsubscribe 
Enter fullscreen mode Exit fullscreen mode

Then run the installation commands:

rails g unsubscribe:install rails unsubscribe:install:migrations rails db:migrate 
Enter fullscreen mode Exit fullscreen mode

πŸ“š Usage

Unsubscribe::Owner

  • Add include Unsubscribe::Owner to a Model. The Model must have an email column.
class User < ApplicationRecord include Unsubscribe::Owner end 
Enter fullscreen mode Exit fullscreen mode
Available Methods
User.first.mailer_subscriptions # => #<ActiveRecord::Associations::CollectionProxy [#<Unsubscribe::MailerSubscription>, #<Unsubscribe::MailerSubscription>] > User.first.subscribed_to_mailer? "MarketingMailer" # => true/false User.first.to_sgid_for_mailer_subscription # => #<SignedGlobalID:123 ...> 
Enter fullscreen mode Exit fullscreen mode

Unsubscribe::Mailer

  • Add include Unsubscribe::Mailer to a Mailer.
  • Optionally call unsubscribe_settings to set a name and description. This will be used in the unsubscribe page.
  • Set mail to: to @recipient.email. The @recipient is an instance of whatever Class include Unsubscribe::Owner was added to.
class MarketingMailer < ApplicationMailer include Unsubscribe::Mailer unsubscribe_settings name: "Marketing Emails", description: "Updates on promotions and sales." def promotion mail to: @recipient.email end end 
Enter fullscreen mode Exit fullscreen mode
  • Call the Mailer with a recipient parameter.
 MarketingMailer.with( recipient: User.first ).promotion.deliver_now 
Enter fullscreen mode Exit fullscreen mode

Available Methods

Unsubscribe::MailerSubscription.first.action # => "Unsubscribe from"/"Subscribe to" Unsubscribe::MailerSubscription.first.call_to_action # => "Unsubscribe from Marketing Emails"/"Subscribe to Marketing Emails" Unsubscribe::MailerSubscription.first.description # => "Updates on promotions and sales." Unsubscribe::MailerSubscription.first.name # => "Marketing Emails" 
Enter fullscreen mode Exit fullscreen mode

Unsubscribe Link

  • Add the @unsubscribe_url link to the Mailer.
<%= link_to "Unsubscribe", @unsubscribe_url %> 
Enter fullscreen mode Exit fullscreen mode

βš™οΈ Customize Templates

Run rails g unsubscribe:views if you want to modify the existing templates.

🌐 I18n

The language used for Unsubscribe::MailerSubscription#action can be translated.

# config/locales/en.yml en: unsubscribe: action: subscribe: "Subscribe to" unsubscribe: "Unsubscribe from" 
Enter fullscreen mode Exit fullscreen mode

πŸ™ Contributing

If you'd like to open a PR please make sure the following things pass:

bin/rails test bundle exec standardrb 
Enter fullscreen mode Exit fullscreen mode

πŸ“œ License

The gem is available as open source under the terms of the MIT License.

Top comments (0)