active_admin_mail 0.1
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 +7 -0
- data/.DS_Store +0 -0
- data/.gitignore +51 -0
- data/Gemfile +3 -0
- data/README.md +36 -0
- data/Rakefile +2 -0
- data/active_admin_mail.gemspec +34 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/.DS_Store +0 -0
- data/lib/active_admin_mail.rb +52 -0
- data/lib/active_admin_mail/engine.rb +14 -0
- data/lib/active_admin_mail/mail_builder.rb +35 -0
- data/lib/active_admin_mail/mail_log.rb +6 -0
- data/lib/active_admin_mail/mail_template.rb +41 -0
- data/lib/active_admin_mail/version.rb +3 -0
- data/lib/generators/.DS_Store +0 -0
- data/lib/generators/active_admin_mail/.DS_Store +0 -0
- data/lib/generators/active_admin_mail/USAGE +14 -0
- data/lib/generators/active_admin_mail/install_generator.rb +16 -0
- data/lib/generators/active_admin_mail/templates/.DS_Store +0 -0
- data/lib/generators/active_admin_mail/templates/db/.DS_Store +0 -0
- data/lib/generators/active_admin_mail/templates/db/migrate/1_active_admin_mail_migration.rb +30 -0
- data/lib/generators/active_admin_mail/templates/mail_log.rb +3 -0
- data/lib/generators/active_admin_mail/templates/mail_template.rb +15 -0
- metadata +124 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c190a664c47a7c4795e365642d6a995b8d67ec85
|
4
|
+
data.tar.gz: d12ea2c424ce7b7367c9417297ec379996818dee
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 6093a2d18316de77a443318257e562df084cdffa5139e4e3f482c10e1885958fd91afcb87373ac5ef630e104b8458fe3d7fd2594c0be5c6524e5577f2982f1ae
|
7
|
+
data.tar.gz: 36d3c1b94369b679faef009ea4e5a6c77790ca9a5b183a99b0dc98a83cb9ad6c1eb9f0d0aea07a892710e98273b8ecb432e17dda32f1dd128015e60606b08f95
|
data/.DS_Store
ADDED
Binary file
|
data/.gitignore
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
/.bundle/
|
2
|
+
/.yardoc
|
3
|
+
/Gemfile.lock
|
4
|
+
/_yardoc/
|
5
|
+
/coverage/
|
6
|
+
/doc/
|
7
|
+
/pkg/
|
8
|
+
/spec/reports/
|
9
|
+
/tmp/
|
10
|
+
*.rbc
|
11
|
+
capybara-*.html
|
12
|
+
.rspec
|
13
|
+
/log
|
14
|
+
/tmp
|
15
|
+
/db/*.sqlite3
|
16
|
+
/db/*.sqlite3-journal
|
17
|
+
/public/system
|
18
|
+
/coverage/
|
19
|
+
/spec/tmp
|
20
|
+
**.orig
|
21
|
+
rerun.txt
|
22
|
+
pickle-email-*.html
|
23
|
+
|
24
|
+
# TODO Comment out these rules if you are OK with secrets being uploaded to the repo
|
25
|
+
config/initializers/secret_token.rb
|
26
|
+
config/secrets.yml
|
27
|
+
|
28
|
+
# dotenv
|
29
|
+
# TODO Comment out this rule if environment variables can be committed
|
30
|
+
.env
|
31
|
+
|
32
|
+
## Environment normalization:
|
33
|
+
/.bundle
|
34
|
+
/vendor/bundle
|
35
|
+
|
36
|
+
# these should all be checked in to normalize the environment:
|
37
|
+
# Gemfile.lock, .ruby-version, .ruby-gemset
|
38
|
+
|
39
|
+
# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
|
40
|
+
.rvmrc
|
41
|
+
|
42
|
+
# if using bower-rails ignore default bower_components path bower.json files
|
43
|
+
/vendor/assets/bower_components
|
44
|
+
*.bowerrc
|
45
|
+
bower.json
|
46
|
+
|
47
|
+
# Ignore pow environment settings
|
48
|
+
.powenv
|
49
|
+
|
50
|
+
# Ignore Byebug command history file.
|
51
|
+
.byebug_history
|
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# active_admin_mail
|
2
|
+
Manage the emails you send and your ActionMailer mailers with ActiveAdmin
|
3
|
+
|
4
|
+
# Installation
|
5
|
+
|
6
|
+
# Usage
|
7
|
+
|
8
|
+
```
|
9
|
+
class UserMailer < ActionMailer::Base
|
10
|
+
|
11
|
+
def new_partnership(user)
|
12
|
+
@user = user
|
13
|
+
active_admin_mail(to: @user.email)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
```
|
18
|
+
|
19
|
+
active_admin_mail internally...
|
20
|
+
|
21
|
+
* Looks up the mail template in the database via `find_by(:klass => 'UserMailer', :action => 'new_partnership')`
|
22
|
+
* Parses that mail template into liquid to render
|
23
|
+
* Parses the instance variables in the action that don't start with @_ to a mapped liquid hash like `{ 'user' => { 'id' => 1 }`
|
24
|
+
* Sends the email using ActionMailer#mail
|
25
|
+
* Logs the email
|
26
|
+
|
27
|
+
# Todo
|
28
|
+
|
29
|
+
* Mail layouts
|
30
|
+
* Filters for active_admin
|
31
|
+
* txt and html
|
32
|
+
* Wysiwyg?
|
33
|
+
* Preview?
|
34
|
+
* Fallback?
|
35
|
+
* CC, BCC per mailer?
|
36
|
+
* callbacks?
|
data/Rakefile
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'active_admin_mail/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "active_admin_mail"
|
8
|
+
spec.version = ActiveAdminMail::VERSION
|
9
|
+
spec.authors = ["Josh Brody"]
|
10
|
+
spec.email = ["josh@josh.mn"]
|
11
|
+
|
12
|
+
spec.summary = %q{Manage your ActionMailer mail templates from ActiveAdmin, and log them.}
|
13
|
+
spec.description = %q{Manage your ActionMailer mail templates from ActiveAdmin, and log them.}
|
14
|
+
spec.homepage = "https://github.com/joshmn/active_admin_mail"
|
15
|
+
|
16
|
+
# Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
|
17
|
+
# delete this section to allow pushing this gem to any host.
|
18
|
+
if spec.respond_to?(:metadata)
|
19
|
+
spec.metadata['allowed_push_host'] = "https://rubygems.org"
|
20
|
+
else
|
21
|
+
raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
|
22
|
+
end
|
23
|
+
|
24
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
25
|
+
spec.bindir = "exe"
|
26
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
27
|
+
spec.require_paths = ["lib"]
|
28
|
+
|
29
|
+
spec.add_runtime_dependency 'liquid', '~> 3.0.0'
|
30
|
+
spec.add_runtime_dependency 'activeadmin', '~> 1.0.0'
|
31
|
+
spec.add_development_dependency "bundler", "~> 1.11"
|
32
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
33
|
+
|
34
|
+
end
|
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "active_admin_mail"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
data/lib/.DS_Store
ADDED
Binary file
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'active_admin_mail/mail_builder'
|
2
|
+
require 'active_admin_mail/mail_template'
|
3
|
+
require 'active_admin_mail/mail_log'
|
4
|
+
|
5
|
+
begin
|
6
|
+
require 'rails/engine'
|
7
|
+
require 'active_admin_mail/engine'
|
8
|
+
rescue LoadError
|
9
|
+
|
10
|
+
end
|
11
|
+
|
12
|
+
module ActiveAdminMail
|
13
|
+
|
14
|
+
class << self
|
15
|
+
attr_accessor :configuration
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.configure
|
19
|
+
self.configuration ||= Configuration.new
|
20
|
+
yield(configuration)
|
21
|
+
end
|
22
|
+
|
23
|
+
class Configuration
|
24
|
+
attr_accessor :mail_classes
|
25
|
+
|
26
|
+
def initialize
|
27
|
+
@mail_classes = []
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
protected
|
32
|
+
def self.find_user_by(attr = :email, value = nil)
|
33
|
+
User.find_by(attr => value)
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.create_mail_log(from, mail_result)
|
37
|
+
ActiveAdminMail::MailLog.create(
|
38
|
+
:user => from.instance_variable_get(:@user).nil? ? ActiveAdminMail.find_user_by(:email, mail_result.to.first) : from.instance_variable_get(:@user),
|
39
|
+
:active_admin_mail_template_id => from.instance_variable_get(:@_mail_template).id,
|
40
|
+
:action => from.action_name,
|
41
|
+
:klass => from.class.to_s,
|
42
|
+
:headers => self.parsed_headers(mail_result).to_json
|
43
|
+
)
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.parsed_headers(mail_result)
|
47
|
+
headers = {}
|
48
|
+
mail_result.header_fields.map { |k| headers[k.name] = k.value }
|
49
|
+
headers
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module ActiveAdminMail
|
2
|
+
class Engine < Rails::Engine
|
3
|
+
isolate_namespace ActiveAdminMail
|
4
|
+
|
5
|
+
initializer :append_migrations do |app|
|
6
|
+
unless app.root.to_s.match root.to_s
|
7
|
+
config.paths["db/migrate"].expanded.each do |expanded_path|
|
8
|
+
app.config.paths["db/migrate"] << expanded_path
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module ActiveAdminMail
|
2
|
+
class MailBuilder
|
3
|
+
|
4
|
+
def initialize(source, template)
|
5
|
+
@source = source
|
6
|
+
@template = template
|
7
|
+
end
|
8
|
+
|
9
|
+
def render
|
10
|
+
@render ||= parsed_mailer.render(liquid_variables_map)
|
11
|
+
end
|
12
|
+
|
13
|
+
protected
|
14
|
+
|
15
|
+
# creates a hash for liquid templating within your mailer
|
16
|
+
# removes the @instance_variable @ to build it into a standard hash for liquid
|
17
|
+
# like { 'user' => { 'id' => 1 }
|
18
|
+
def liquid_variables_map
|
19
|
+
liquid_variables = {}
|
20
|
+
permitted_instance_variables.each do |v|
|
21
|
+
liquid_variables[v.to_s[1 .. -1]] = @source.instance_variable_get(v)
|
22
|
+
end
|
23
|
+
liquid_variables.as_json
|
24
|
+
end
|
25
|
+
|
26
|
+
def parsed_mailer
|
27
|
+
@parsed_mailer ||= Liquid::Template.parse(@template.content)
|
28
|
+
end
|
29
|
+
|
30
|
+
def permitted_instance_variables
|
31
|
+
@source.instance_variables.select { |v| !v.to_s.start_with?("@_") }
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# == Schema Information
|
2
|
+
#
|
3
|
+
# Table name: mail_templates
|
4
|
+
#
|
5
|
+
# id :integer not null, primary key
|
6
|
+
# subject :string
|
7
|
+
# content :string
|
8
|
+
# klass :string
|
9
|
+
# action :string
|
10
|
+
# created_at :datetime not null
|
11
|
+
# updated_at :datetime not null
|
12
|
+
#
|
13
|
+
|
14
|
+
module ActiveAdminMail
|
15
|
+
class MailTemplate < ActiveRecord::Base
|
16
|
+
|
17
|
+
self.table_name = 'active_admin_mail_templates'
|
18
|
+
|
19
|
+
validates_presence_of :klass, :in => -> { rails_mailers }
|
20
|
+
validates_uniqueness_of :action, :scope => :klass
|
21
|
+
|
22
|
+
def additional_headers
|
23
|
+
headers = {}
|
24
|
+
headers[:subject] = self.subject if self.subject.present?
|
25
|
+
headers
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.rails_mailers
|
29
|
+
ActiveAdminMail.configuration.mail_classes
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.mail_actions
|
33
|
+
rails_mailers.collect { |mailer| [mailer, mailer.constantize.public_instance_methods(false)] }
|
34
|
+
end
|
35
|
+
|
36
|
+
Kaminari.configure do |config|
|
37
|
+
config.page_method_name = :per_page_kaminari
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
Binary file
|
Binary file
|
@@ -0,0 +1,14 @@
|
|
1
|
+
Description:
|
2
|
+
Copies default ActiveAdmin pages for MailTemplate and MailLog to app/your_active_admin_namespace/active_admin_mail
|
3
|
+
|
4
|
+
Example:
|
5
|
+
rails generate active_admin_mail:install [admin_path]
|
6
|
+
|
7
|
+
admin_path defaults to admin
|
8
|
+
|
9
|
+
This will create:
|
10
|
+
app/admin/active_admin_mail/mail_log.rb
|
11
|
+
app/admin/active_admin_mail/mail_template.rb
|
12
|
+
|
13
|
+
and add a migration of:
|
14
|
+
1_active_admin_mail_migration.rb
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module ActiveAdminMail
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
4
|
+
source_root File.expand_path("../templates", __FILE__)
|
5
|
+
desc "Copies default ActiveAdmin pages for MailTemplate and MailLog to app/admin/active_admin_mail."
|
6
|
+
|
7
|
+
argument :admin_namespace, required: false, default: "admin"
|
8
|
+
|
9
|
+
def copy_initializer_file
|
10
|
+
copy_file "mail_log.rb", "app/#{admin_namespace}/active_admin_mail/mail_log.rb"
|
11
|
+
copy_file "mail_template.rb", "app/#{admin_namespace}/active_admin_mail/mail_template.rb"
|
12
|
+
copy_file "db/migrate/1_active_admin_mail_migration.rb", "db/migrate/1_active_admin_mail_migration.rb"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
Binary file
|
Binary file
|
@@ -0,0 +1,30 @@
|
|
1
|
+
class ActiveAdminMailMigration < ActiveRecord::Migration
|
2
|
+
def change
|
3
|
+
create_table :active_admin_mail_templates do |t|
|
4
|
+
t.string :klass
|
5
|
+
t.string :action
|
6
|
+
t.text :content
|
7
|
+
t.text :subject
|
8
|
+
|
9
|
+
t.timestamps null: false
|
10
|
+
end
|
11
|
+
add_index :active_admin_mail_templates, :klass
|
12
|
+
add_index :active_admin_mail_templates, :action
|
13
|
+
|
14
|
+
create_table :active_admin_mail_logs do |t|
|
15
|
+
t.integer :active_admin_mail_template_id
|
16
|
+
t.string :template
|
17
|
+
t.string :action
|
18
|
+
t.string :klass
|
19
|
+
t.integer :user_id
|
20
|
+
t.json :headers
|
21
|
+
|
22
|
+
t.timestamps null: false
|
23
|
+
end
|
24
|
+
add_index :active_admin_mail_logs, :active_admin_mail_template_id
|
25
|
+
add_index :active_admin_mail_logs, :template
|
26
|
+
add_index :active_admin_mail_logs, :action
|
27
|
+
add_index :active_admin_mail_logs, :klass
|
28
|
+
add_index :active_admin_mail_logs, :user_id
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
ActiveAdmin.register ActiveAdminMail::MailTemplate do
|
2
|
+
menu :label => "Templates", :parent => "Mail"
|
3
|
+
|
4
|
+
permit_params :klass, :action, :subject, :content
|
5
|
+
|
6
|
+
form do |f|
|
7
|
+
f.inputs do
|
8
|
+
f.input :klass
|
9
|
+
f.input :action, :collection => ActiveAdminMail::MailTemplate.mail_actions, :input_html => { :onchange => '$("#active_admin_mail_mail_template_klass").val($("#active_admin_mail_mail_template_action option:selected").closest("optgroup").attr("label"));' }
|
10
|
+
f.input :subject
|
11
|
+
f.input :content, :as => :text
|
12
|
+
end
|
13
|
+
actions
|
14
|
+
end
|
15
|
+
end
|
metadata
ADDED
@@ -0,0 +1,124 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: active_admin_mail
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Josh Brody
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-01-20 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: liquid
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 3.0.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 3.0.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activeadmin
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.0.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.0.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.11'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.11'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '10.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '10.0'
|
69
|
+
description: Manage your ActionMailer mail templates from ActiveAdmin, and log them.
|
70
|
+
email:
|
71
|
+
- josh@josh.mn
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- ".DS_Store"
|
77
|
+
- ".gitignore"
|
78
|
+
- Gemfile
|
79
|
+
- README.md
|
80
|
+
- Rakefile
|
81
|
+
- active_admin_mail.gemspec
|
82
|
+
- bin/console
|
83
|
+
- bin/setup
|
84
|
+
- lib/.DS_Store
|
85
|
+
- lib/active_admin_mail.rb
|
86
|
+
- lib/active_admin_mail/engine.rb
|
87
|
+
- lib/active_admin_mail/mail_builder.rb
|
88
|
+
- lib/active_admin_mail/mail_log.rb
|
89
|
+
- lib/active_admin_mail/mail_template.rb
|
90
|
+
- lib/active_admin_mail/version.rb
|
91
|
+
- lib/generators/.DS_Store
|
92
|
+
- lib/generators/active_admin_mail/.DS_Store
|
93
|
+
- lib/generators/active_admin_mail/USAGE
|
94
|
+
- lib/generators/active_admin_mail/install_generator.rb
|
95
|
+
- lib/generators/active_admin_mail/templates/.DS_Store
|
96
|
+
- lib/generators/active_admin_mail/templates/db/.DS_Store
|
97
|
+
- lib/generators/active_admin_mail/templates/db/migrate/1_active_admin_mail_migration.rb
|
98
|
+
- lib/generators/active_admin_mail/templates/mail_log.rb
|
99
|
+
- lib/generators/active_admin_mail/templates/mail_template.rb
|
100
|
+
homepage: https://github.com/joshmn/active_admin_mail
|
101
|
+
licenses: []
|
102
|
+
metadata:
|
103
|
+
allowed_push_host: https://rubygems.org
|
104
|
+
post_install_message:
|
105
|
+
rdoc_options: []
|
106
|
+
require_paths:
|
107
|
+
- lib
|
108
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '0'
|
113
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
requirements: []
|
119
|
+
rubyforge_project:
|
120
|
+
rubygems_version: 2.4.3
|
121
|
+
signing_key:
|
122
|
+
specification_version: 4
|
123
|
+
summary: Manage your ActionMailer mail templates from ActiveAdmin, and log them.
|
124
|
+
test_files: []
|