ar_mailer_revised 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 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: