adzap-ar_mailer 1.4.1 → 1.4.2
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +12 -0
- data/Manifest.txt +3 -1
- data/README.txt +21 -5
- data/Rakefile +55 -9
- data/lib/action_mailer/ar_sendmail.rb +2 -2
- data/share/{ar_sendmail → bsd/ar_sendmail} +0 -0
- data/share/linux/ar_sendmail +75 -0
- data/share/linux/ar_sendmail.conf +30 -0
- metadata +7 -13
data/History.txt
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
= 1.4.2
|
2
|
+
|
3
|
+
* New Features
|
4
|
+
* Added Ruby based linux init.d script for handling daemon startup using yaml
|
5
|
+
config file. See files share/linux/ar_sendmail and ar_sendmail.conf
|
6
|
+
* Bugs fixed
|
7
|
+
* Proper handling for relative and absolute paths for the pid file
|
8
|
+
* Removed hoe dependency since we need the explicit gemspec file for github and
|
9
|
+
not deploying to RubyForge its not as useful.
|
10
|
+
* Moved old BSD rc.d script to share/bsd folder
|
11
|
+
* Updated README with github gem install, docs and init script info
|
12
|
+
|
1
13
|
= 1.4.1
|
2
14
|
|
3
15
|
* Bugs fixed
|
data/Manifest.txt
CHANGED
@@ -7,7 +7,9 @@ bin/ar_sendmail
|
|
7
7
|
lib/action_mailer/ar_mailer.rb
|
8
8
|
lib/action_mailer/ar_sendmail.rb
|
9
9
|
lib/smtp_tls.rb
|
10
|
-
share/ar_sendmail
|
10
|
+
share/bsd/ar_sendmail
|
11
|
+
share/linux/ar_sendmail
|
12
|
+
share/linux/ar_sendmail.conf
|
11
13
|
test/action_mailer.rb
|
12
14
|
test/test_armailer.rb
|
13
15
|
test/test_arsendmail.rb
|
data/README.txt
CHANGED
@@ -10,6 +10,10 @@ Documentation:
|
|
10
10
|
|
11
11
|
http://seattlerb.org/ar_mailer
|
12
12
|
|
13
|
+
and for forked additions
|
14
|
+
|
15
|
+
http://github.com/adzap/ar_mailer/wikis
|
16
|
+
|
13
17
|
Bugs:
|
14
18
|
|
15
19
|
http://rubyforge.org/tracker/?func=add&group_id=1513&atid=5921
|
@@ -20,11 +24,17 @@ Even delivering email to the local machine may take too long when you have to
|
|
20
24
|
send hundreds of messages. ar_mailer allows you to store messages into the
|
21
25
|
database for later delivery by a separate process, ar_sendmail.
|
22
26
|
|
23
|
-
== Installing ar_mailer
|
27
|
+
== Installing ar_mailer (forked)
|
28
|
+
|
29
|
+
Install the gem from GitHub gems server:
|
30
|
+
|
31
|
+
First, if you haven't already
|
32
|
+
|
33
|
+
$ sudo gem sources -a http://gems.github.com
|
24
34
|
|
25
|
-
|
35
|
+
Then
|
26
36
|
|
27
|
-
$ sudo gem install ar_mailer
|
37
|
+
$ sudo gem install adzap-ar_mailer
|
28
38
|
|
29
39
|
See ActionMailer::ARMailer for instructions on converting to ARMailer.
|
30
40
|
|
@@ -33,7 +43,13 @@ See ar_sendmail -h for options to ar_sendmail.
|
|
33
43
|
NOTE: You may need to delete an smtp_tls.rb file if you have one lying
|
34
44
|
around. ar_mailer supplies it own.
|
35
45
|
|
36
|
-
===
|
46
|
+
=== init.d/rc.d scripts
|
37
47
|
|
38
|
-
|
48
|
+
For Linux both script and demo config files are in share/linux.
|
49
|
+
See ar_sendmail.conf for setting up your config. Copy the ar_sendmail file
|
50
|
+
to /etc/init.d/ and make it executable. Then for Debian based distros run
|
51
|
+
'sudo update-rc.d ar_sendmail defaults' and it should work. Make sure you have
|
52
|
+
the config file /etc/ar_sendmail.conf in place before starting.
|
39
53
|
|
54
|
+
For FreeBSD or NetBSD script is share/bsd/ar_sendmail. This is old and does not
|
55
|
+
support the config file unless someone wants to submit a patch.
|
data/Rakefile
CHANGED
@@ -1,14 +1,60 @@
|
|
1
|
-
require '
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake/gempackagetask'
|
3
|
+
require 'rake/testtask'
|
4
|
+
require 'rake/rdoctask'
|
5
|
+
|
6
|
+
$:.unshift(File.expand_path(File.dirname(__FILE__) + '/lib'))
|
2
7
|
|
3
8
|
require './lib/action_mailer/ar_sendmail'
|
9
|
+
|
10
|
+
ar_mailer_gemspec = Gem::Specification.new do |s|
|
11
|
+
s.name = %q{ar_mailer}
|
12
|
+
s.version = ActionMailer::ARSendmail::VERSION
|
13
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
14
|
+
s.authors = ["Eric Hodel"]
|
15
|
+
s.date = %q{2008-07-04}
|
16
|
+
s.default_executable = %q{ar_sendmail}
|
17
|
+
s.description = %q{Even delivering email to the local machine may take too long when you have to send hundreds of messages. ar_mailer allows you to store messages into the database for later delivery by a separate process, ar_sendmail.}
|
18
|
+
s.email = %q{drbrain@segment7.net}
|
19
|
+
s.executables = ["ar_sendmail"]
|
20
|
+
s.extra_rdoc_files = ["History.txt", "LICENSE.txt", "Manifest.txt", "README.txt"]
|
21
|
+
s.files = ["History.txt", "LICENSE.txt", "Manifest.txt", "README.txt", "Rakefile", "bin/ar_sendmail", "lib/action_mailer/ar_mailer.rb", "lib/action_mailer/ar_sendmail.rb", "lib/smtp_tls.rb", "share/bsd/ar_sendmail", "share/linux/ar_sendmail", "share/linux/ar_sendmail.conf", "test/action_mailer.rb", "test/test_armailer.rb", "test/test_arsendmail.rb"]
|
22
|
+
s.has_rdoc = true
|
23
|
+
s.homepage = %q{http://seattlerb.org/ar_mailer}
|
24
|
+
s.rdoc_options = ["--main", "README.txt"]
|
25
|
+
s.require_paths = ["lib"]
|
26
|
+
s.rubyforge_project = %q{seattlerb}
|
27
|
+
s.rubygems_version = %q{1.2.0}
|
28
|
+
s.summary = %q{A two-phase delivery agent for ActionMailer}
|
29
|
+
s.test_files = ["test/test_armailer.rb", "test/test_arsendmail.rb"]
|
30
|
+
end
|
4
31
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
32
|
+
Rake::GemPackageTask.new(ar_mailer_gemspec) do |pkg|
|
33
|
+
pkg.gem_spec = ar_mailer_gemspec
|
34
|
+
end
|
35
|
+
|
36
|
+
namespace :gem do
|
37
|
+
namespace :spec do
|
38
|
+
desc "Update ar_mailer.gemspec"
|
39
|
+
task :generate do
|
40
|
+
File.open("ar_mailer.gemspec", "w") do |f|
|
41
|
+
f.puts(ar_mailer_gemspec.to_ruby)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
desc "Build packages and install"
|
48
|
+
task :install => :package do
|
49
|
+
sh %{sudo gem install --local pkg/ar_mailer-#{ActionMailer::ARSendmail::VERSION}}
|
13
50
|
end
|
14
51
|
|
52
|
+
desc 'Default: run unit tests.'
|
53
|
+
task :default => :test
|
54
|
+
|
55
|
+
desc 'Test the ar_mailer gem.'
|
56
|
+
Rake::TestTask.new(:test) do |t|
|
57
|
+
t.libs << 'lib' << 'test'
|
58
|
+
t.pattern = 'test/**/test_*.rb'
|
59
|
+
t.verbose = true
|
60
|
+
end
|
@@ -54,7 +54,7 @@ class ActionMailer::ARSendmail
|
|
54
54
|
##
|
55
55
|
# The version of ActionMailer::ARSendmail you are running.
|
56
56
|
|
57
|
-
VERSION = '1.4.
|
57
|
+
VERSION = '1.4.2'
|
58
58
|
|
59
59
|
##
|
60
60
|
# Maximum number of times authentication will be consecutively retried
|
@@ -351,7 +351,7 @@ end
|
|
351
351
|
|
352
352
|
if options[:Daemon] then
|
353
353
|
require 'webrick/server'
|
354
|
-
@@pid_file = File.expand_path(options[:Pidfile])
|
354
|
+
@@pid_file = File.expand_path(options[:Pidfile], options[:Chdir])
|
355
355
|
if File.exists? @@pid_file
|
356
356
|
# check to see if process is actually running
|
357
357
|
pid = ''
|
File without changes
|
@@ -0,0 +1,75 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# ar_sendmail Startup script for ar_mailer by Adam Meehan
|
4
|
+
#
|
5
|
+
# chkconfig: - 85 15
|
6
|
+
# description: ar_sendmail manages sending emails for Rails apps.
|
7
|
+
#
|
8
|
+
require 'yaml'
|
9
|
+
|
10
|
+
# Config file app mailers
|
11
|
+
config_file = '/etc/ar_sendmail.conf'
|
12
|
+
|
13
|
+
begin
|
14
|
+
config = YAML::load(IO.read(config_file))
|
15
|
+
rescue Errno::ENOENT
|
16
|
+
puts "Config file not found at '#{config_file}'!"
|
17
|
+
exit
|
18
|
+
end
|
19
|
+
|
20
|
+
default_options = {'pidfile' => './log/ar_sendmail.pid'}.merge(config.delete('defaults') || {})
|
21
|
+
|
22
|
+
command, app_name = *ARGV
|
23
|
+
|
24
|
+
def start(app, options)
|
25
|
+
switches = ""
|
26
|
+
options.each {|k, v| switches << " --#{k} #{v}"}
|
27
|
+
STDOUT.write "Starting mailer for #{app} in #{options['environment']} mode ... "
|
28
|
+
status = system("ar_sendmail -d #{switches}") ? "started" : "failed"
|
29
|
+
puts status
|
30
|
+
end
|
31
|
+
|
32
|
+
def stop(app, options)
|
33
|
+
path = options['chdir']
|
34
|
+
pid_file = File.expand_path(options['pidfile'], path)
|
35
|
+
if File.exist? pid_file
|
36
|
+
begin
|
37
|
+
pid = open(pid_file).read.to_i
|
38
|
+
STDOUT.write "Stopping mailer for #{app}... "
|
39
|
+
Process.kill('TERM', pid)
|
40
|
+
puts "stopped"
|
41
|
+
rescue Errno::ESRCH
|
42
|
+
puts "Mailer process does not exist. Is not running."
|
43
|
+
end
|
44
|
+
else
|
45
|
+
puts "Skipping mailer for #{app}, no pid file."
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def restart(app, options)
|
50
|
+
puts "Restarting mailer for #{app} ..."
|
51
|
+
stop app, options
|
52
|
+
start app, options
|
53
|
+
end
|
54
|
+
|
55
|
+
def command_error(msg)
|
56
|
+
puts msg
|
57
|
+
exit
|
58
|
+
end
|
59
|
+
|
60
|
+
if ['start', 'stop', 'restart'].include?(command)
|
61
|
+
apps = config
|
62
|
+
if app_name
|
63
|
+
command_error "No such app defined in ar_sendmail config" unless config.include?(app_name)
|
64
|
+
app_options = config[app_name]
|
65
|
+
command_error "Must specify chdir for app in ar_sendmail config" if app_options['chdir'].nil?
|
66
|
+
apps = {app_name => app_options}
|
67
|
+
end
|
68
|
+
|
69
|
+
apps.each do |app, options|
|
70
|
+
options = default_options.merge(options)
|
71
|
+
send(command, app, options)
|
72
|
+
end
|
73
|
+
else
|
74
|
+
command_error "Usage: ar_sendmail {start|stop|restart} [optional app_name]"
|
75
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# This is a configuration file for ar_sendmail daemon init.d script
|
2
|
+
#
|
3
|
+
# Define the settings for each app which has a mailer that you want start
|
4
|
+
# automatically on startup.
|
5
|
+
#
|
6
|
+
# You can define an optional defaults section which will apply to all
|
7
|
+
# applications unless the setting is specified under the applications specific
|
8
|
+
# config.
|
9
|
+
#
|
10
|
+
# Settings not specified in either the defaults or app config section will
|
11
|
+
# be implied by the gem binary defaults. The option names are the same as the
|
12
|
+
# long format binary option switches. Run 'ar_sendmail -h' to see option switches
|
13
|
+
# and default values.
|
14
|
+
#
|
15
|
+
# Copy this file to /etc/ar_sendmail.conf and it will be read by the init.d
|
16
|
+
# script.
|
17
|
+
#
|
18
|
+
|
19
|
+
## Demo app config
|
20
|
+
#
|
21
|
+
#defaults:
|
22
|
+
# batch-size: 10
|
23
|
+
# max-age: 0
|
24
|
+
# delay: 60
|
25
|
+
#
|
26
|
+
#app_name:
|
27
|
+
# chdir: /var/www/apps/app_name
|
28
|
+
# environment: production
|
29
|
+
# pidfile: ./log/ar_sendmail.pid
|
30
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adzap-ar_mailer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Hodel
|
@@ -9,18 +9,10 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-07-
|
12
|
+
date: 2008-07-04 00:00:00 -07:00
|
13
13
|
default_executable: ar_sendmail
|
14
|
-
dependencies:
|
15
|
-
|
16
|
-
name: hoe
|
17
|
-
version_requirement:
|
18
|
-
version_requirements: !ruby/object:Gem::Requirement
|
19
|
-
requirements:
|
20
|
-
- - ">="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 1.7.0
|
23
|
-
version:
|
14
|
+
dependencies: []
|
15
|
+
|
24
16
|
description: Even delivering email to the local machine may take too long when you have to send hundreds of messages. ar_mailer allows you to store messages into the database for later delivery by a separate process, ar_sendmail.
|
25
17
|
email: drbrain@segment7.net
|
26
18
|
executables:
|
@@ -42,7 +34,9 @@ files:
|
|
42
34
|
- lib/action_mailer/ar_mailer.rb
|
43
35
|
- lib/action_mailer/ar_sendmail.rb
|
44
36
|
- lib/smtp_tls.rb
|
45
|
-
- share/ar_sendmail
|
37
|
+
- share/bsd/ar_sendmail
|
38
|
+
- share/linux/ar_sendmail
|
39
|
+
- share/linux/ar_sendmail.conf
|
46
40
|
- test/action_mailer.rb
|
47
41
|
- test/test_armailer.rb
|
48
42
|
- test/test_arsendmail.rb
|