mail-single_file_delivery 0.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.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in mail-single_file_delivery.gemspec
4
+ gemspec
data/README.mkd ADDED
@@ -0,0 +1,26 @@
1
+ # Single File Delivery Method for Mail gem
2
+
3
+ ## Summary
4
+ This gem is a delivery-method plug-in for [mail](https://github.com/mikel/mail)
5
+ that delivers all mail to a single file for testing.
6
+
7
+ The Mail gem already provides a file delivery-method that appends a copy of each message
8
+ to a file named after each message recipient,
9
+ but I want them to all go to a single file
10
+ so that I can monitor them from another window with `tail -f my-file`,
11
+ or `cat my-named-pipe` while I hand-test the web interface from a browser.
12
+
13
+ Of course this is _in addition to_ running automated tests with Rspec and Cucumber.
14
+ At some point in development, I want to actually see the pages and enter my own inputs
15
+ and perhaps display the mail messages in an HTML reader.
16
+
17
+ ## Synopsis
18
+
19
+ Mail.defaults do
20
+ delivery_method SingleFileDelivery => '/tmp/my-file.txt'
21
+ end
22
+
23
+ ## See Also
24
+
25
+ * https://github.com/mikel/mail
26
+ * https://github.com/lsiden/mail-store-agent
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,22 @@
1
+ require "mail-single_file_delivery/version"
2
+
3
+ module Mail
4
+ module SingleFileDelivery
5
+ class Agent
6
+ attr_accessor :settings
7
+
8
+ def initialize(settings={})
9
+ self.settings = {:filename => '/tmp/mail-single_file'}.merge! settings
10
+ filename = self.settings[:filename]
11
+ mode = File.pipe?(filename) ? 'a+' : 'w'
12
+ @fd = File.open(filename, mode) \
13
+ or raise "Cannot open #{filename} for writing" # just being safe
14
+ end
15
+
16
+ def deliver!(mail)
17
+ @fd.write mail.encoded + "\r\n\r\n"
18
+ @fd.flush
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,5 @@
1
+ module Mail
2
+ module SingleFileDelivery
3
+ VERSION = "0.0.1"
4
+ end
5
+ end
@@ -0,0 +1,48 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "mail-single_file_delivery/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "mail-single_file_delivery"
7
+ s.version = Mail::SingleFileDelivery::VERSION
8
+ s.authors = ["Larry Siden, Westside Consulting LLC"]
9
+ s.email = ["lsiden@westside-consulting.com"]
10
+ s.homepage = "https://github.com/lsiden/mail-single_file_delivery"
11
+ s.summary = %q{
12
+ Delivery all mail to a single file for testing.
13
+ }
14
+ s.description = %q{
15
+ # Single File Delivery Method for Mail gem
16
+
17
+ ## Summary
18
+ This gem is a delivery-method plug-in for [mail](https://github.com/mikel/mail)
19
+ that delivers all mail to a single file for testing.
20
+
21
+ The Mail gem already provides a file delivery-method that appends a copy of each message
22
+ to a file named after each message recipient,
23
+ but I want them to all go to a single file
24
+ so that I can monitor them from another window with `tail -f my-file`,
25
+ or `cat my-named-pipe` while I hand-test the web interface from a browser.
26
+
27
+ Of course this is _in addition to_ running automated tests with Rspec and Cucumber.
28
+ At some point in development, I want to actually see the pages and enter my own inputs
29
+ and perhaps display the mail messages in an HTML reader.
30
+
31
+ ## Synopsis
32
+
33
+ Mail.defaults do
34
+ delivery_method SingleFileDelivery => '/tmp/my-file.txt'
35
+ end
36
+ }
37
+
38
+ s.rubyforge_project = "mail-single_file_delivery"
39
+
40
+ s.files = `git ls-files`.split("\n")
41
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
42
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
43
+ s.require_paths = ["lib"]
44
+
45
+ # specify any dependencies here; for example:
46
+ s.add_development_dependency "rspec"
47
+ s.add_runtime_dependency "mail"
48
+ end
@@ -0,0 +1,66 @@
1
+ # encoding: utf-8
2
+
3
+ require 'mail-single_file_delivery'
4
+ require 'mail'
5
+
6
+ describe Mail::SingleFileDelivery::Agent do
7
+
8
+ before(:each) do
9
+ # Reset all defaults back to an original state
10
+ Mail.defaults do
11
+ delivery_method :smtp, { :address => "localhost",
12
+ :port => 25,
13
+ :domain => 'localhost.localdomain',
14
+ :user_name => nil,
15
+ :password => nil,
16
+ :authentication => nil,
17
+ :enable_starttls_auto => true }
18
+ end
19
+ end
20
+
21
+ it "should respond to #settings() and #settings=()" do
22
+ subject.should respond_to :settings
23
+ subject.should respond_to :settings=
24
+ end
25
+
26
+ it "should respond to #deliver!()" do
27
+ subject.should respond_to :deliver!
28
+ end
29
+
30
+ describe "general usage" do
31
+ the_file = '/tmp/mail-single_file'
32
+ sep = "\r\n\r\n"
33
+
34
+ before(:all) do
35
+ end
36
+
37
+ it "should send an email to a single file" do
38
+ Mail.defaults do
39
+ delivery_method Mail::SingleFileDelivery::Agent, :filename => the_file
40
+ end
41
+ mail = Mail.deliver do
42
+ from 'roger@moore.com'
43
+ to 'marcel@amont.com'
44
+ subject 'invalid RFC2822'
45
+ end
46
+ File.read(the_file).should == mail.encoded + sep
47
+ end
48
+
49
+ it "should send multiple emails to a single file" do
50
+ Mail.defaults do
51
+ delivery_method Mail::SingleFileDelivery::Agent, :filename => the_file
52
+ end
53
+ mail = Mail.deliver do
54
+ from 'roger@moore.com'
55
+ to 'marcel@amont.com, bob@me.com'
56
+ subject 'invalid RFC2822'
57
+ end
58
+ mail2 = Mail.deliver do
59
+ from 'roger@moore.com'
60
+ to 'marcel@amont.com, bob@me.com'
61
+ subject 'invalid RFC2822'
62
+ end
63
+ File.read(the_file).should == mail.encoded + sep + mail2.encoded + sep
64
+ end
65
+ end
66
+ end
metadata ADDED
@@ -0,0 +1,85 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mail-single_file_delivery
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Larry Siden, Westside Consulting LLC
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-01-01 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: &85054000 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *85054000
25
+ - !ruby/object:Gem::Dependency
26
+ name: mail
27
+ requirement: &85053690 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *85053690
36
+ description: ! "\n# Single File Delivery Method for Mail gem\n\n## Summary\nThis gem
37
+ is a delivery-method plug-in for [mail](https://github.com/mikel/mail)\nthat delivers
38
+ all mail to a single file for testing.\n\nThe Mail gem already provides a file delivery-method
39
+ that appends a copy of each message\nto a file named after each message recipient,\nbut
40
+ I want them to all go to a single file \nso that I can monitor them from another
41
+ window with `tail -f my-file`,\nor `cat my-named-pipe` while I hand-test the web
42
+ interface from a browser.\n\nOf course this is _in addition to_ running automated
43
+ tests with Rspec and Cucumber.\nAt some point in development, I want to actually
44
+ see the pages and enter my own inputs\nand perhaps display the mail messages in
45
+ an HTML reader.\n\n## Synopsis\n\n Mail.defaults do\n delivery_method SingleFileDelivery
46
+ => '/tmp/my-file.txt'\n end\n "
47
+ email:
48
+ - lsiden@westside-consulting.com
49
+ executables: []
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - .gitignore
54
+ - Gemfile
55
+ - README.mkd
56
+ - Rakefile
57
+ - lib/mail-single_file_delivery.rb
58
+ - lib/mail-single_file_delivery/version.rb
59
+ - mail-single_file_delivery.gemspec
60
+ - spec/single_file_delivery_spec.rb
61
+ homepage: https://github.com/lsiden/mail-single_file_delivery
62
+ licenses: []
63
+ post_install_message:
64
+ rdoc_options: []
65
+ require_paths:
66
+ - lib
67
+ required_ruby_version: !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ! '>='
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ requirements: []
80
+ rubyforge_project: mail-single_file_delivery
81
+ rubygems_version: 1.8.10
82
+ signing_key:
83
+ specification_version: 3
84
+ summary: Delivery all mail to a single file for testing.
85
+ test_files: []