merb-mailer 1.0.15 → 1.1.0.pre

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -1,74 +1,65 @@
1
- require File.expand_path(File.join(File.dirname(__FILE__), "..", "rake_helpers"))
2
-
3
- ##############################################################################
4
- # Package && release
5
- ##############################################################################
6
- RUBY_FORGE_PROJECT = "merb"
7
- PROJECT_URL = "http://merbivore.com"
8
- PROJECT_SUMMARY = "Merb plugin that provides mailer functionality to Merb"
9
- PROJECT_DESCRIPTION = PROJECT_SUMMARY
10
-
11
- GEM_AUTHOR = "Yehuda Katz"
12
- GEM_EMAIL = "ykatz@engineyard.com"
13
-
14
- GEM_NAME = "merb-mailer"
15
- PKG_BUILD = ENV['PKG_BUILD'] ? '.' + ENV['PKG_BUILD'] : ''
16
- GEM_VERSION = Merb::VERSION + PKG_BUILD
17
-
18
- RELEASE_NAME = "REL #{GEM_VERSION}"
19
-
20
- require "extlib/tasks/release"
21
-
22
- spec = Gem::Specification.new do |s|
23
- s.rubyforge_project = RUBY_FORGE_PROJECT
24
- s.name = GEM_NAME
25
- s.version = GEM_VERSION
26
- s.platform = Gem::Platform::RUBY
27
- s.has_rdoc = true
28
- s.extra_rdoc_files = ["README.textile", "LICENSE", 'TODO']
29
- s.summary = PROJECT_SUMMARY
30
- s.description = PROJECT_DESCRIPTION
31
- s.author = GEM_AUTHOR
32
- s.email = GEM_EMAIL
33
- s.homepage = PROJECT_URL
34
- s.add_dependency('merb-core', "~> #{Merb::VERSION}")
35
- s.add_dependency('mailfactory', '>= 1.2.3')
36
- s.require_path = 'lib'
37
- s.files = %w(LICENSE README.textile Rakefile TODO Generators) + Dir.glob("{lib,spec}/**/*")
38
- end
1
+ require 'rubygems'
2
+ require 'rake'
39
3
 
40
- Rake::GemPackageTask.new(spec) do |pkg|
41
- pkg.gem_spec = spec
42
- end
4
+ # Assume a typical dev checkout to fetch the current merb-core version
5
+ require File.expand_path('../../merb-core/lib/merb-core/version', __FILE__)
43
6
 
44
- desc "Install the gem"
45
- task :install do
46
- Merb::RakeHelper.install(GEM_NAME, :version => GEM_VERSION)
47
- end
7
+ # Load this library's version information
8
+ require File.expand_path('../lib/merb-mailer/version', __FILE__)
48
9
 
49
- desc "Uninstall the gem"
50
- task :uninstall do
51
- Merb::RakeHelper.uninstall(GEM_NAME, :version => GEM_VERSION)
52
- end
10
+ begin
11
+
12
+ gem 'jeweler', '~> 1.4'
13
+ require 'jeweler'
14
+
15
+ Jeweler::Tasks.new do |gemspec|
16
+
17
+ gemspec.version = Merb::Mailer::VERSION
18
+
19
+ gemspec.name = "merb-mailer"
20
+ gemspec.description = "Merb plugin for mailer support"
21
+ gemspec.summary = "Merb plugin that provides mailer functionality to Merb"
22
+
23
+ gemspec.authors = [ "Yehuda Katz" ]
24
+ gemspec.email = "ykatz@engineyard.com"
25
+ gemspec.homepage = "http://merbivore.com/"
26
+
27
+ gemspec.files = %w(Generators LICENSE Rakefile README.textile TODO) + Dir['{lib,spec}/**/*']
28
+
29
+ # Runtime dependencies
30
+ gemspec.add_dependency 'merb-core', "~> #{Merb::VERSION}"
31
+ gemspec.add_dependency('mailfactory', '>= 1.2.3')
32
+
33
+ # Development dependencies
34
+ gemspec.add_development_dependency 'rspec', '>= 1.2.9'
53
35
 
54
- desc "Create a gemspec file"
55
- task :gemspec do
56
- File.open("#{GEM_NAME}.gemspec", "w") do |file|
57
- file.puts spec.to_ruby
58
36
  end
37
+
38
+ Jeweler::GemcutterTasks.new
39
+
40
+ rescue LoadError
41
+ puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
59
42
  end
60
43
 
61
- desc "Run all examples (or a specific spec with TASK=xxxx)"
62
- Spec::Rake::SpecTask.new('spec') do |t|
63
- t.spec_opts = ["-cfs"]
64
- t.spec_files = begin
65
- if ENV["TASK"]
66
- ENV["TASK"].split(',').map { |task| "spec/**/#{task}_spec.rb" }
67
- else
68
- FileList['spec/**/*_spec.rb']
69
- end
70
- end
44
+ require 'spec/rake/spectask'
45
+ Spec::Rake::SpecTask.new(:spec) do |spec|
46
+ spec.spec_opts << '--options' << 'spec/spec.opts' if File.exists?('spec/spec.opts')
47
+ spec.libs << 'lib' << 'spec'
48
+ spec.spec_files = FileList['spec/**/*_spec.rb']
71
49
  end
72
50
 
73
- desc 'Default: run spec examples'
74
- task :default => 'spec'
51
+ Spec::Rake::SpecTask.new(:rcov) do |spec|
52
+ spec.libs << 'lib' << 'spec'
53
+ spec.pattern = 'spec/**/*_spec.rb'
54
+ spec.rcov = true
55
+ end
56
+
57
+ task :default => :spec
58
+
59
+ require 'rake/rdoctask'
60
+ Rake::RDocTask.new do |rdoc|
61
+ rdoc.rdoc_dir = 'rdoc'
62
+ rdoc.title = "test_gem #{Merb::Mailer::VERSION}"
63
+ rdoc.rdoc_files.include('README*')
64
+ rdoc.rdoc_files.include('lib/**/*.rb')
65
+ end
@@ -241,7 +241,7 @@ module Merb
241
241
  rescue Merb::ControllerExceptions::TemplateNotFound => e
242
242
  # An error should be logged if no template is found instead of an error raised
243
243
  if @_missing_templates
244
- Merb.logger.error(e)
244
+ Merb.logger.error(e.message)
245
245
  else
246
246
  @_missing_templates = true
247
247
  end
@@ -21,6 +21,7 @@ module Merb
21
21
  # :pass => 'pass',
22
22
  # :auth => :plain # :plain, :login, :cram_md5, the default is no auth
23
23
  # :domain => "localhost.localdomain" # the HELO domain provided by the client to the server
24
+ # :tls => true/false/nil, true enables tls, default nil
24
25
  # }
25
26
  #
26
27
  # or
@@ -54,9 +55,19 @@ module Merb
54
55
 
55
56
  # Sends the mail using SMTP.
56
57
  def net_smtp
57
- Net::SMTP.start(config[:host], config[:port].to_i, config[:domain],
58
- config[:user], config[:pass], config[:auth]) { |smtp|
59
- smtp.send_message(@mail.to_s, @mail.from.first, @mail.to.to_s.split(/[,;]/))
58
+ smtp = Net::SMTP.new(config[:host], config[:port].to_i)
59
+ if config[:tls]
60
+ if smtp.respond_to?(:enable_starttls) # 1.9.x
61
+ smtp.enable_starttls
62
+ elsif smtp.respond_to?(:enable_tls) && smtp.respond_to?(:use_tls?)
63
+ smtp.enable_tls(OpenSSL::SSL::VERIFY_NONE) # 1.8.x with tlsmail
64
+ else
65
+ raise 'Unable to enable TLS, for Ruby 1.8.x install tlsmail'
66
+ end
67
+ end
68
+ smtp.start(config[:domain], config[:user], config[:pass], config[:auth]) { |smtp|
69
+ to = @mail.to.is_a?(String) ? @mail.to.split(/[,;]/) : @mail.to
70
+ smtp.send_message(@mail.to_s, @mail.from.first, to)
60
71
  }
61
72
  end
62
73
 
@@ -92,7 +103,9 @@ module Merb
92
103
  @mail.add_attachment_as *v
93
104
  end
94
105
  else
95
- raise ArgumentError, "You did not pass in a file. Instead, you sent a #{file_or_files.class}" if !file_or_files.is_a?(File)
106
+ if !file_or_files.is_a?(File) && !file_or_files.is_a?(StringIO)
107
+ raise ArgumentError, "You did not pass in a file. Instead, you sent a #{file_or_files.class}"
108
+ end
96
109
  @mail.add_attachment_as(file_or_files, filename, type, headers)
97
110
  end
98
111
  end
@@ -0,0 +1,5 @@
1
+ module Merb
2
+ module Mailer
3
+ VERSION = '1.1.0.pre'.freeze
4
+ end
5
+ end
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  Spec::Runner.configure do |config|
4
4
  config.include Merb::Test::RequestHelper
data/spec/mailer_spec.rb CHANGED
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  class TestMailer < Merb::Mailer
4
4
  self.delivery_method = :test_send
@@ -6,12 +6,12 @@ end
6
6
 
7
7
  class TestSMTPMailer < Merb::Mailer
8
8
  self.delivery_method = :net_smtp
9
- self.config = { :host => 'smtp.yourserver.com',
9
+ self.config = { :domain => 'localhost.localdomain',
10
+ :host => 'smtp.yourserver.com',
10
11
  :port => '25',
11
12
  :user => 'user',
12
13
  :pass => 'pass',
13
14
  :auth => :plain }
14
-
15
15
  end
16
16
 
17
17
  class TestSendmailMailer < Merb::Mailer
@@ -89,18 +89,32 @@ describe "a merb mailer" do
89
89
  attachments.last["headers"].should include("Content-ID: <license.txt>")
90
90
  end
91
91
 
92
+ it "should be able to accept objects that respond to :read as attachments" do
93
+ setup_test_mailer
94
+ @m.attach StringIO.new('This is some dummy text'), 'readme', 'text/plain', 'Content-ID: <readme.txt>'
95
+ @m.deliver!
96
+ delivery = TestMailer.deliveries.last
97
+ attachments = delivery.instance_variable_get("@attachments")
98
+ attachments.size.should == 1
99
+ attachments.first["mimetype"].should eql("text/plain")
100
+ attachments.first["filename"].should eql("readme")
101
+ attachments.first["headers"].should include("Content-ID: <readme.txt>")
102
+ end
103
+
92
104
  it "should be able to send mails via SMTP" do
93
105
  setup_test_mailer TestSMTPMailer
94
- Net::SMTP.stub!(:start).and_return(true)
95
- Net::SMTP.should_receive(:start).with("smtp.yourserver.com", 25, nil, "user", "pass", :plain)
106
+ smtp = Net::SMTP.new(@m.config[:host], @m.config[:port])
107
+ Net::SMTP.stub!(:new).and_return(smtp)
108
+ smtp.should_receive(:start).with("localhost.localdomain", "user", "pass", :plain)
96
109
  @m.deliver!
97
110
  end
98
111
 
99
112
  it "should send mails via SMTP with no auth" do
100
113
  setup_test_mailer TestSMTPMailer
101
114
  @m.config[:auth] = nil
102
- Net::SMTP.stub!(:start).and_return(true)
103
- Net::SMTP.should_receive(:start).with("smtp.yourserver.com", 25, nil, "user", "pass", nil)
115
+ smtp = Net::SMTP.new(@m.config[:host], @m.config[:port])
116
+ Net::SMTP.stub!(:new).and_return(smtp)
117
+ smtp.should_receive(:start).with("localhost.localdomain", "user", "pass", nil)
104
118
  @m.deliver!
105
119
  end
106
120
 
data/spec/spec.opts ADDED
@@ -0,0 +1,2 @@
1
+ --format specdoc
2
+ --colour
data/spec/spec_helper.rb CHANGED
@@ -1,8 +1,21 @@
1
- $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
2
1
  require "rubygems"
3
- require "merb-core"
2
+
3
+ # Use current merb-core sources if running from a typical dev checkout.
4
+ lib = File.expand_path('../../../merb-core/lib', __FILE__)
5
+ $LOAD_PATH.unshift(lib) if File.directory?(lib)
6
+ require 'merb-core'
7
+
8
+ # Use current merb-gen sources if running from a typical dev checkout.
9
+ lib = File.expand_path('../../../merb-gen/lib', __FILE__)
10
+ $LOAD_PATH.unshift(lib) if File.directory?(lib)
11
+ require 'merb-gen'
12
+
13
+ # The lib under test
4
14
  require "merb-mailer"
5
15
 
16
+ # Satisfies Autotest and anyone else not using the Rake tasks
17
+ require 'spec'
18
+
6
19
  Merb::Config.use do |c|
7
20
  c[:session_store] = :memory
8
21
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: merb-mailer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.15
4
+ version: 1.1.0.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yehuda Katz
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-04 00:00:00 +00:00
12
+ date: 2010-02-20 00:00:00 +00:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ~>
22
22
  - !ruby/object:Gem::Version
23
- version: 1.0.15
23
+ version: 1.1.0.pre
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: mailfactory
@@ -32,30 +32,40 @@ dependencies:
32
32
  - !ruby/object:Gem::Version
33
33
  version: 1.2.3
34
34
  version:
35
- description: Merb plugin that provides mailer functionality to Merb
35
+ - !ruby/object:Gem::Dependency
36
+ name: rspec
37
+ type: :development
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 1.2.9
44
+ version:
45
+ description: Merb plugin for mailer support
36
46
  email: ykatz@engineyard.com
37
47
  executables: []
38
48
 
39
49
  extensions: []
40
50
 
41
51
  extra_rdoc_files:
42
- - README.textile
43
52
  - LICENSE
44
53
  - TODO
45
54
  files:
55
+ - Generators
46
56
  - LICENSE
47
57
  - README.textile
48
58
  - Rakefile
49
59
  - TODO
50
- - Generators
51
60
  - lib/generators/mailer_generator.rb
52
61
  - lib/generators/templates/mailer/app/mailers/%file_name%_mailer.rb
53
62
  - lib/generators/templates/mailer/app/mailers/views/%file_name%_mailer/notify_on_event.text.erb
54
63
  - lib/generators/templates/mailer/spec/mailers/%file_name%_mailer_spec.rb
64
+ - lib/merb-mailer.rb
55
65
  - lib/merb-mailer/mail_controller.rb
56
66
  - lib/merb-mailer/mailer.rb
57
67
  - lib/merb-mailer/mailer_mixin.rb
58
- - lib/merb-mailer.rb
68
+ - lib/merb-mailer/version.rb
59
69
  - spec/mail_controller_spec.rb
60
70
  - spec/mailer_generator_spec.rb
61
71
  - spec/mailer_spec.rb
@@ -71,14 +81,15 @@ files:
71
81
  - spec/mailers/views/test_mail_controller/ninth.text.erb
72
82
  - spec/mailers/views/test_mail_controller/second.text.erb
73
83
  - spec/mailers/views/test_mail_controller/third.html.erb
84
+ - spec/spec.opts
74
85
  - spec/spec_helper.rb
75
86
  has_rdoc: true
76
- homepage: http://merbivore.com
87
+ homepage: http://merbivore.com/
77
88
  licenses: []
78
89
 
79
90
  post_install_message:
80
- rdoc_options: []
81
-
91
+ rdoc_options:
92
+ - --charset=UTF-8
82
93
  require_paths:
83
94
  - lib
84
95
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -89,13 +100,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
89
100
  version:
90
101
  required_rubygems_version: !ruby/object:Gem::Requirement
91
102
  requirements:
92
- - - ">="
103
+ - - ">"
93
104
  - !ruby/object:Gem::Version
94
- version: "0"
105
+ version: 1.3.1
95
106
  version:
96
107
  requirements: []
97
108
 
98
- rubyforge_project: merb
109
+ rubyforge_project:
99
110
  rubygems_version: 1.3.5
100
111
  signing_key:
101
112
  specification_version: 3