ar_mailer_revised 0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 57ad9dcf569b1f53fcc93b4b7100e67ea077c08f
4
+ data.tar.gz: bbf2faed6943104ab53f078fbd4ce1c64586de6a
5
+ SHA512:
6
+ metadata.gz: 8768cb5e338630a98e615513234066f37bb269deba0b73bc0b2ee5053257e82721e4884c7c856759cb3378f9c4e769b0bff763cb78009d4be327bd925bb10291
7
+ data.tar.gz: ca22e7b7f016f3d5b50f9430a2762c10d71be0580fa54e83089baf3f41bcc7990b90aa9f66104e7e098a8d7bd4ec5a7b56c62c89f0ccc668f78b1a0da55ef5ae
data/.gitignore ADDED
@@ -0,0 +1,20 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ .idea/
19
+ test/dummy/log/
20
+ test/dummy/tmp
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-2.1.1
data/.yardopts ADDED
@@ -0,0 +1 @@
1
+ app/**/*.rb lib/**/*.rb --no-private
data/Gemfile ADDED
@@ -0,0 +1,14 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Declare your gem's dependencies in ar_mailer_revised.gemspec.
4
+ # Bundler will treat runtime dependencies like base dependencies, and
5
+ # development dependencies will be added by default to the :development group.
6
+ gemspec
7
+
8
+ # Declare any dependencies that are still in development here instead of in
9
+ # your gemspec. These might include edge Rails or gems from your path or
10
+ # Git. Remember to move these dependencies to your gemspec before releasing
11
+ # your gem to rubygems.org.
12
+
13
+ # To use debugger
14
+ # gem 'debugger'
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Stefan Exner
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2014 YOURNAME
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,199 @@
1
+ # ArMailerRevised
2
+
3
+ [ArMailer](https://github.com/seattlerb/ar_mailer) is a great gem which allows you to store emails in your application's database and batch deliver
4
+ them later using a background task.
5
+
6
+ However, it was not compatible with newer versions of Rails and also lacking some of the functionality I needed in my applications.
7
+
8
+ Especially, I wanted to use
9
+
10
+ * custom delivery dates in the future for delayed emails
11
+ * custom SMTP settings per email
12
+ * custom attributes directly in the email record to keep track of them
13
+
14
+ **Note:** This is the Rails 2.3 version of ARMailer Revised.
15
+ It does (and always will) **only support generating emails, not actually sending them**.
16
+
17
+ To actually send them, a Rails 4 application will be needed, this version was only made
18
+ to let older existing applications use the email queue.
19
+
20
+ ## Installation
21
+
22
+ Add this line to your application's Gemfile:
23
+
24
+ gem 'ar_mailer_revised'
25
+
26
+ And then execute:
27
+
28
+ $ bundle
29
+
30
+ Or install it yourself as:
31
+
32
+ $ gem install ar_mailer_revised
33
+
34
+ ### Generating Files
35
+
36
+ ArMailerRevised needs a few things to work correctly:
37
+
38
+ 1. A table in the database to store the email queue
39
+ 2. An email model to create and access the email records
40
+ 3. An initializer to set the gem configuration
41
+
42
+ All of them can be created using a generator:
43
+
44
+ $ ruby script/generate ar_mailer_revised MODEL_NAME
45
+
46
+ If you just want to add an old application to an existing Rails 4 email queue,
47
+ simply delete the migration as you won't need it.
48
+ Otherwise, migrate your application before continuing.
49
+
50
+ $ rake db:migrate
51
+
52
+ ### Setting the delivery method
53
+
54
+ First of all, you have to set ActionMailer to use the gem's delivery method.
55
+ This can be done per environment or globally for the application using either
56
+
57
+ ```ruby
58
+ config.action_mailer.delivery_method = :activerecord
59
+ ```
60
+
61
+ or - not inside a configuration file
62
+
63
+ ```ruby
64
+ ActionMailer::Base.delivery_method = :activerecord
65
+ ```
66
+
67
+ ### SMTP-Settings
68
+
69
+ ArMailerRevised accepts SMTP settings in the form ActionMailer::Base (v4) does.
70
+ Application wide settings have to be stored in ActionMailer::Base.smtp_settings.
71
+ Please have a look at [ActionMailer::Base](http://api.rubyonrails.org/classes/ActionMailer/Base.html)
72
+
73
+ The only difference here are additional TLS options as follows:
74
+
75
+ 1. `:enable_starttls_auto` enables STARTTLS if the serves is capable to handle it
76
+ 2. `:enable_starttls` forces the usage of STARTTLS, whether the server is capable of it or not
77
+ 3. `:tls` forces the usage of TLS (SSL SMTP)
78
+
79
+ **Important**: These additional settings are in descending order, meaning that a higher importance
80
+ setting will override a less important setting.
81
+
82
+ `:openssl_verify_mode` is currently not supported, but will possibly be added later on.
83
+
84
+ Below will be a growing list of demo SMTP settings for popular providers.
85
+
86
+ ## Creating Emails
87
+
88
+ ArMailerRevised uses the normal ActionMailer::Base templates, so you can write
89
+ delivery-methods like you would for direct email sending.
90
+ On delivering, the email will be stored in the database and not being sent directly.
91
+
92
+ ```ruby
93
+ class TestMailer < ActionMailer::Base
94
+ def basic_email(recipients)
95
+ from 'test@example.com'
96
+ to recipients
97
+ subject 'Hello, World'
98
+ body 'How are you?'
99
+ end
100
+ end
101
+ ```
102
+
103
+ ### Setting a custom delivery time
104
+
105
+ ArMailerRevised adds a new method to ActionMailer templates to customize
106
+ the resulting email record. One of them is +ar_mailer_delivery_time+.
107
+ This method sets a time which determines the earliest sending time for this email,
108
+ in other words: If you set this time, the email won't be sent prior to it.
109
+
110
+ ```ruby
111
+ def delayed_email
112
+ ar_mailer_delivery_time Time.now + 2.hours
113
+
114
+ from 'test@example.com'
115
+ to recipients
116
+ subject 'Delayed Email'
117
+ body 'Yes, I am indeed delayed.'
118
+ end
119
+ ```
120
+
121
+ **Important**: It may happen that the Rails logging output of the generated mail may still contain
122
+ custom attributes (like the delivery time) in its header. This happens because ActionMailer will
123
+ log the email before actually delivering it. The generated email will **not** contain these headers any more.
124
+
125
+ ### Setting custom SMTP settings
126
+
127
+ It is possible to set own SMTP settings for each email in the system which will then be used for delivery.
128
+ These settings may contain everything the global settings do (see above).
129
+
130
+ ```ruby
131
+ def custom_smtp_email
132
+ ar_mailer_smtp_settings({
133
+ :address => 'localhost',
134
+ :port => 25,
135
+ :domain => 'localhost.localdomain',
136
+ :user_name => 'some.user',
137
+ :password => 'some.password',
138
+ :authentication => :plain,
139
+ :enable_starttls_auto => true
140
+ })
141
+
142
+ from 'test@example.com'
143
+ to recipients
144
+ subject 'Custom Settings Email'
145
+ body 'I use custom settings (but will go back to the default ones if these are incorrect)'
146
+ end
147
+ ```
148
+
149
+ **Important**: As the mailer has to use the password to connect to the SMTP server, it is stored in the database in plain text!
150
+ If this means a security issue to you, please use only the global settings which are loaded from the environment and not stored in the database.
151
+
152
+ ### Other custom attributes
153
+
154
+ It is possible to set custom attributes in the email record before it is saved, e.g.
155
+ to keep better track of emails (by adding an identifier of the reason the email was generated at all).
156
+
157
+ You can add custom attributes to the email table simply by altering the generated migration, e.g.
158
+
159
+ t.integer 'a_number'
160
+
161
+ In the email delivering method, these attributes may then be filled with the actual data using the `ar_mailer_attribute` helper method:
162
+
163
+ ```ruby
164
+ def custom_attribute_email
165
+ ar_mailer_attribute :a_number, 42
166
+
167
+ from 'test@example.com'
168
+ to recipients
169
+ subject 'Custom Attribute Email'
170
+ body 'I have a custom attribute.'
171
+ end
172
+ ```
173
+
174
+ ### Sending Emails
175
+
176
+ As mentioned above, this version of ARMailer Revised does not allow sending emails.
177
+
178
+ Please use the Rails 4 version instead, e.g. with an own little application
179
+ which uses the same database and only provides the email sending functionality.
180
+
181
+ ### SMTP settings for common providers (to be extended)
182
+
183
+ GoogleMail:
184
+
185
+ :address => 'smtp.googlemail.com',
186
+ :port => 465,
187
+ :domain => 'googlemail.com',
188
+ :user_name => 'USERNAME@googlemail.com',
189
+ :password => 'SOME_PASSWORD',
190
+ :authentication => :plain,
191
+ :tls => true
192
+
193
+ # Contributing
194
+
195
+ 1. Fork it
196
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
197
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
198
+ 4. Push to the branch (`git push origin my-new-feature`)
199
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,28 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ require 'rdoc/task'
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = 'rdoc'
11
+ rdoc.title = 'ArMailerRevised'
12
+ rdoc.options << '--line-numbers'
13
+ rdoc.rdoc_files.include('README.rdoc')
14
+ rdoc.rdoc_files.include('lib/**/*.rb')
15
+ end
16
+
17
+ Bundler::GemHelper.install_tasks
18
+
19
+ require 'rake/testtask'
20
+
21
+ Rake::TestTask.new(:test) do |t|
22
+ t.libs << 'lib'
23
+ t.libs << 'test'
24
+ t.pattern = 'test/**/*_test.rb'
25
+ t.verbose = false
26
+ end
27
+
28
+ task default: :test
@@ -0,0 +1,30 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+
5
+ require 'ar_mailer_revised/version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = 'ar_mailer_revised'
9
+ spec.version = ArMailerRevised::VERSION
10
+ spec.authors = ['Stefan Exner']
11
+ spec.email = ['stex@sterex.de']
12
+ spec.description = %q{Extension of the great ArMailer gem by Eric Hodel.}
13
+ spec.summary = 'Batch email sending for rails applications'
14
+ spec.homepage = 'http://www.github.com/stex/ar_mailer_revised'
15
+ spec.license = 'MIT'
16
+
17
+ spec.files = `git ls-files`.split($/)
18
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
+ spec.require_paths = ['lib']
21
+
22
+ spec.add_development_dependency 'bundler', '~> 1.3'
23
+ spec.add_development_dependency 'rake', '~> 10.3'
24
+ spec.add_development_dependency 'yard', '~> 0.8'
25
+ spec.add_development_dependency 'redcarpet', '~> 2.3'
26
+
27
+ spec.add_dependency 'rails', '~> 2.3'
28
+
29
+ spec.required_ruby_version = '>= 1.8.7'
30
+ end
data/bin/ar_sendmail ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ puts <<-EOS
4
+
5
+ ar_sendmail is currently only available in the rails 4 version of ar_mailer_revised.
6
+ The rails 2 version was only created to support email creation on older systems
7
+ while still keeping the mail queue on a more up-to-date one.
8
+
9
+ EOS
10
+
@@ -0,0 +1,23 @@
1
+ class ArMailerRevisedGenerator < Rails::Generator::NamedBase
2
+ def manifest
3
+ record do |m|
4
+ model_name = (name || 'Email').classify
5
+
6
+ #Create the model
7
+ m.template 'model.rb', "app/models/#{model_name.downcase.underscore}.rb", :assigns => {:model_name => model_name}
8
+
9
+ #Create the migration
10
+ m.migration_template 'migration.rb', 'db/migrate', :migration_file_name => "create_#{model_name.downcase.underscore.pluralize}",
11
+ :assigns => {:model_name => model_name}
12
+
13
+ #Create the initializer
14
+ m.template 'initializer.rb', 'config/initializers/ar_mailer_revised.rb', :assigns => {:model_name => model_name}
15
+ end
16
+ end
17
+
18
+ protected
19
+
20
+ def banner
21
+ "Usage: #{$0} ar_mailer_revised MODEL_NAME"
22
+ end
23
+ end
@@ -0,0 +1,8 @@
1
+ ArMailerRevised.configuration do |config|
2
+
3
+ #The model your application is using for email sending.
4
+ #If you created it using the ArMailerRevised generator, the below
5
+ #model name should already be correct.
6
+ config.email_class = <%= model_name.classify %>
7
+
8
+ end
@@ -0,0 +1,32 @@
1
+ class Create<%= model_name.classify.pluralize %> < ActiveRecord::Migration
2
+ def change
3
+ create_table :<%= model_name.underscore.pluralize %> do |t|
4
+ t.string 'from'
5
+ t.string 'to'
6
+
7
+ #Timestamp for the last send attempt, 0 means, that there was no send attempt yet
8
+ t.integer 'last_send_attempt', :default => 0
9
+
10
+ #Mail body including headers
11
+ t.text 'mail'
12
+
13
+ #Custom delivery time, ArMailer won't send the email prior to this time
14
+ t.datetime 'delivery_time'
15
+
16
+ #Custom SMTP settings per email
17
+ t.text 'smtp_settings'
18
+
19
+ #You can add further attributes here, they can then be assigned
20
+ #to the email record using the +ar_mailer_attribute+ method from
21
+ #within mailer methods. Example:
22
+ #
23
+ # In the migration:
24
+ # t.integer :client_id
25
+ #
26
+ # Inside the mailer method:
27
+ # ar_mailer_attribute :client_id, @client.id
28
+
29
+ t.timestamps
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,30 @@
1
+ #
2
+ # Class used as email model for ArMailerRevised
3
+ #
4
+ # @attr [String] from
5
+ # The email sender
6
+ #
7
+ # @attr [String] to
8
+ # The email recipient
9
+ #
10
+ # @attr [Integer] last_send_attempt
11
+ # Unix timestamp containing the last time the system tried to deliver this email.
12
+ # The value will be +nil+ if there wasn't a send attempt yet
13
+ #
14
+ # @attr [String] mail
15
+ # The mail body, including the mail header information (from, to, encoding, ...)
16
+ #
17
+ # @attr [Date] delivery_date
18
+ # If this is set, the email won't be sent before the given date.
19
+ #
20
+ # @attr [Hash] smtp_settings
21
+ # Serialized Hash storing custom SMTP settings just for this email.
22
+ # If this value is +nil+, the system will use the default SMTP settings set up in the application
23
+ #
24
+ class <%= model_name.classify %> < ActiveRecord::Base
25
+ #Helper methods and named scopes provided by ArMailerRevised
26
+ include ArMailerRevised::EmailScaffold
27
+
28
+
29
+
30
+ end
@@ -0,0 +1,74 @@
1
+ #
2
+ # Adds sending email through an ActiveRecord table as a delivery method for
3
+ # ActionMailer.
4
+ #
5
+ class ActionMailer::Base
6
+ #
7
+ # Sets a custom email class attribute. It can be used
8
+ # if the user wants to set custom attributes on his email records,
9
+ # e.g. to track them later.
10
+ # They are automatically set as attributes in the resulting AR record,
11
+ # so make sure that they actually exist as database columns!
12
+ #
13
+ # @example Setting a client id to track which client sent the email
14
+ # ar_mailer_attribute :client_id, @client.id
15
+ #
16
+ def ar_mailer_attribute(key, value = nil)
17
+ attrs = ar_mailer_setting(:custom_attributes) || {}
18
+ if value
19
+ attrs[key.to_s] = value
20
+ ar_mailer_setting(:custom_attributes, attrs)
21
+ else
22
+ attrs[key.to_s]
23
+ end
24
+ end
25
+
26
+ #
27
+ # Sets custom SMTP settings just for this email
28
+ #
29
+ def ar_mailer_smtp_settings(new_settings = nil)
30
+ ar_mailer_setting(:smtp_settings, new_settings)
31
+ end
32
+
33
+ #
34
+ # Sets a delivery time for this email. If left at +nil+,
35
+ # the email is sent immediately.
36
+ #
37
+ def ar_mailer_delivery_time(new_time = nil)
38
+ ar_mailer_setting(:delivery_time, new_time)
39
+ end
40
+
41
+ private
42
+
43
+ #
44
+ # Sets or simply returns an ar_mailer_setting
45
+ #
46
+ def ar_mailer_setting(key, value = nil)
47
+ @ar_mailer_settings ||= {}
48
+
49
+ if value
50
+ @ar_mailer_settings[key.to_s] = value
51
+ else
52
+ @ar_mailer_settings[key.to_s]
53
+ end
54
+ end
55
+
56
+ #
57
+ # Custom ActionMailer delivery method.
58
+ # It does not actually send the email, but will create a record
59
+ # in the database instead to be sent later by the ar_sendmail executable.
60
+ #
61
+ def perform_delivery_activerecord(mail)
62
+ email_options = {}
63
+ email_options[:delivery_time] = ar_mailer_setting(:delivery_time)
64
+ email_options[:smtp_settings] = ar_mailer_setting(:smtp_settings)
65
+ email_options[:mail] = mail.encoded
66
+ email_options[:from] = (mail['return-path'] && mail['return-path'].spec) || mail.from.first
67
+
68
+ email_options.reverse_merge!(ar_mailer_setting(:custom_attributes) || {})
69
+
70
+ mail.destinations.each do |destination|
71
+ ArMailerRevised.email_class.create!(email_options.merge({:to => destination}))
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,35 @@
1
+ require 'ar_mailer_revised/version'
2
+ require 'action_mailer/ar_mailer'
3
+ require 'ar_mailer_revised/email_scaffold'
4
+
5
+ #Register the new delivery method
6
+ module ArMailerRevised
7
+ def self.configuration(&proc)
8
+ @@config ||= OpenStruct.new({
9
+ :email_class => 'Email'
10
+ })
11
+ if block_given?
12
+ yield @@config
13
+ @@config.email_class = (@@config.email_class || 'Email').to_s.classify
14
+ else
15
+ @@config
16
+ end
17
+ end
18
+
19
+ #
20
+ # @return [ActiveRecord::Base] (Email)
21
+ # The class used to create new emails in the system
22
+ #
23
+ def self.email_class
24
+ self.email_class_name.constantize
25
+ end
26
+
27
+ #
28
+ # @return [String] (Email)
29
+ # The email class' name
30
+ #
31
+ def self.email_class_name
32
+ self.configuration.email_class.classify
33
+ end
34
+
35
+ end
@@ -0,0 +1,32 @@
1
+ #
2
+ # Helper methods for the chosen email class
3
+ #
4
+ module ArMailerRevised
5
+ module EmailScaffold
6
+
7
+ def self.included(base)
8
+ base.serialize :smtp_settings
9
+
10
+ #Only emails which are to be sent immediately
11
+ base.named_scope :without_delayed, lambda { {:conditions => {:delivery_time => nil} }}
12
+
13
+ #All emails which are to be sent in the future
14
+ base.named_scope :delayed, lambda { {:conditions => ['delivery_time > ?', Time.now]}}
15
+ end
16
+
17
+ #
18
+ # @return [Boolean] +true+ if the system tried to send
19
+ # the email before.
20
+ #
21
+ def previously_attempted?
22
+ last_send_attempt > 0
23
+ end
24
+
25
+ #
26
+ # @return [Boolean] +true+ if this email is to be sent in the future
27
+ #
28
+ def delayed?
29
+ !!(delivery_time && delivery_time > Time.now)
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,3 @@
1
+ module ArMailerRevised
2
+ VERSION = '0.1'
3
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :ar_mailer_revised do
3
+ # # Task goes here
4
+ # end
@@ -0,0 +1,4 @@
1
+ require 'test_helper'
2
+
3
+ class ArMailerRevisedTest < ActiveSupport::TestCase
4
+ end
@@ -0,0 +1,22 @@
1
+ # Configure Rails Environment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
+
6
+ require 'minitest'
7
+ require 'shoulda'
8
+ require "rails/test_help"
9
+
10
+ Rails.backtrace_cleaner.remove_silencers!
11
+
12
+ # Load support files
13
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
14
+
15
+ # Load fixtures from the engine
16
+ if ActiveSupport::TestCase.method_defined?(:fixture_path=)
17
+ ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
18
+ end
19
+
20
+ # For generators
21
+ require "rails/generators/test_case"
22
+ require "generators/ar_mailer_revised/install_generator"
metadata ADDED
@@ -0,0 +1,139 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ar_mailer_revised
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ platform: ruby
6
+ authors:
7
+ - Stefan Exner
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: yard
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.8'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.8'
55
+ - !ruby/object:Gem::Dependency
56
+ name: redcarpet
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.3'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rails
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.3'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.3'
83
+ description: Extension of the great ArMailer gem by Eric Hodel.
84
+ email:
85
+ - stex@sterex.de
86
+ executables:
87
+ - ar_sendmail
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - ".gitignore"
92
+ - ".ruby-version"
93
+ - ".yardopts"
94
+ - Gemfile
95
+ - LICENSE.txt
96
+ - MIT-LICENSE
97
+ - README.md
98
+ - Rakefile
99
+ - ar_mailer_revised.gemspec
100
+ - bin/ar_sendmail
101
+ - generators/ar_mailer_revised/ar_mailer_revised_generator.rb
102
+ - generators/ar_mailer_revised/templates/initializer.rb
103
+ - generators/ar_mailer_revised/templates/migration.rb
104
+ - generators/ar_mailer_revised/templates/model.rb
105
+ - lib/action_mailer/ar_mailer.rb
106
+ - lib/ar_mailer_revised.rb
107
+ - lib/ar_mailer_revised/email_scaffold.rb
108
+ - lib/ar_mailer_revised/version.rb
109
+ - lib/tasks/ar_mailer_revised_tasks.rake
110
+ - test/ar_mailer_revised_test.rb
111
+ - test/test_helper.rb
112
+ homepage: http://www.github.com/stex/ar_mailer_revised
113
+ licenses:
114
+ - MIT
115
+ metadata: {}
116
+ post_install_message:
117
+ rdoc_options: []
118
+ require_paths:
119
+ - lib
120
+ required_ruby_version: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: 1.8.7
125
+ required_rubygems_version: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ requirements: []
131
+ rubyforge_project:
132
+ rubygems_version: 2.4.2
133
+ signing_key:
134
+ specification_version: 4
135
+ summary: Batch email sending for rails applications
136
+ test_files:
137
+ - test/ar_mailer_revised_test.rb
138
+ - test/test_helper.rb
139
+ has_rdoc: