has_emails 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.rdoc CHANGED
@@ -1,6 +1,10 @@
1
1
  == master
2
2
 
3
- == 0.2.1 / 2008-01-11
3
+ == 0.3.0
4
+
5
+ * Add compatibility with has_messages 0.4.0 / Rails 2.3
6
+
7
+ == 0.2.1 / 2009-01-11
4
8
 
5
9
  * Add compatibility with has_messages 0.3.1 / state_machine 0.5.0
6
10
 
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2006-2007 Aaron Pfeifer & Neil Abraham
1
+ Copyright (c) 2006-2009 Aaron Pfeifer
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
@@ -17,4 +17,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
17
  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
18
  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
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.
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc CHANGED
@@ -23,16 +23,17 @@ Source
23
23
 
24
24
  == Description
25
25
 
26
- Emailing between users and other parts of a system is a fairly common feature in
27
- web applications, especially for those that support social networking. Emailing
28
- doesn't necessarily need to be between users, but can also act as a way for the
29
- web application to send notices and other notifications to users.
26
+ Emailing between users and other parts of a system is a fairly common feature
27
+ in web applications, especially for those that support social networking.
28
+ Emailing doesn't necessarily need to be between users, but can also act as a
29
+ way for the web application to send notices and other notifications to users.
30
30
 
31
31
  Rails already provides ActionMailer as a way of sending emails. However, the
32
- framework does not provide an easy way to persist emails, track their status, and
33
- process them asynchronously. Designing and building a framework that supports this
34
- can be complex and takes away from the business focus. This plugin can help ease
35
- that process by demonstrating a complete implementation of these features.
32
+ framework does not provide an easy way to persist emails, track their status,
33
+ and process them asynchronously. Designing and building a framework that
34
+ supports this can be complex and takes away from the business focus. This
35
+ plugin can help ease that process by demonstrating a reference implementation
36
+ of these features.
36
37
 
37
38
  == Usage
38
39
 
@@ -90,7 +91,6 @@ To run against a specific version of Rails:
90
91
 
91
92
  == Dependencies
92
93
 
93
- * Rails 2.1 or later
94
+ * Rails 2.3 or later
94
95
  * has_messages[http://github.com/pluginaweek/has_messages]
95
96
  * state_machine[http://github.com/pluginaweek/state_machine]
96
- * plugins_plus[http://github.com/pluginaweek/plugins_plugins] (optional if app files are copied to your project tree)
data/Rakefile CHANGED
@@ -5,7 +5,7 @@ require 'rake/contrib/sshpublisher'
5
5
 
6
6
  spec = Gem::Specification.new do |s|
7
7
  s.name = 'has_emails'
8
- s.version = '0.2.1'
8
+ s.version = '0.3.0'
9
9
  s.platform = Gem::Platform::RUBY
10
10
  s.summary = 'Demonstrates a reference implementation for sending emails with logging and asynchronous support.'
11
11
 
@@ -13,7 +13,7 @@ spec = Gem::Specification.new do |s|
13
13
  s.require_path = 'lib'
14
14
  s.has_rdoc = true
15
15
  s.test_files = Dir['test/**/*_test.rb']
16
- s.add_dependency 'has_messages', '>= 0.3.1'
16
+ s.add_dependency 'has_messages', '>= 0.4.0'
17
17
  s.add_dependency 'validates_as_email_address', '>= 0.0.2'
18
18
 
19
19
  s.author = 'Aaron Pfeifer'
@@ -6,19 +6,20 @@
6
6
  #
7
7
  # == Associations
8
8
  #
9
- # Email addresses have the following associations defined as a result of using the
10
- # +has_emails+ macro:
11
- # * +emails+ - Emails that were composed and are visible to the owner. Emails may have been sent or unsent.
12
- # * +received_emails+ - Emails that have been received from others and are visible. Emails may have been read or unread.
9
+ # Email addresses have the following associations defined as a result of using
10
+ # the +has_emails+ macro:
11
+ # * +emails+ - Emails that were composed and are visible to the owner. Emails
12
+ # may have been sent or unsent.
13
+ # * +received_emails+ - Emails that have been received from others and are
14
+ # visible. Emails may have been read or unread.
13
15
  # * +unsent_emails+ - Emails that have not yet been delivered
14
16
  # * +sent_emails+ - Emails that have already been delivered
15
17
  class EmailAddress < ActiveRecord::Base
16
18
  has_emails
17
19
 
18
- validates_presence_of :spec
19
- validates_as_email_address :spec
20
- validates_uniqueness_of :spec,
21
- :scope => 'name'
20
+ validates_presence_of :spec
21
+ validates_as_email_address :spec
22
+ validates_uniqueness_of :spec, :scope => 'name'
22
23
 
23
24
  class << self
24
25
  # Finds or create an email address based on the given value
data/lib/has_emails.rb CHANGED
@@ -6,12 +6,15 @@ require 'has_emails/extensions/action_mailer'
6
6
  module HasEmails
7
7
  module MacroMethods
8
8
  # Creates the following email associations:
9
- # * +emails+ - Emails that were composed and are visible to the owner. Emails may have been sent or unsent.
10
- # * +received_emails - Emails that have been received from others and are visible. Emails may have been read or unread.
9
+ # * +emails+ - Emails that were composed and are visible to the owner.
10
+ # Emails may have been sent or unsent.
11
+ # * +received_emails - Emails that have been received from others and are
12
+ # visible. Emails may have been read or unread.
11
13
  #
12
14
  # == Creating new emails
13
15
  #
14
- # To create a new email, the +emails+ association should be used, for example:
16
+ # To create a new email, the +emails+ association should be used. For
17
+ # example:
15
18
  #
16
19
  # address = EmailAddress.find(123)
17
20
  # email = user.emails.build
@@ -1,10 +1,10 @@
1
1
  require 'config/boot'
2
- require "#{File.dirname(__FILE__)}/../../../../plugins_plus/boot"
3
2
 
4
3
  Rails::Initializer.run do |config|
5
4
  config.plugin_paths << '..'
6
- config.plugins = %w(plugins_plus state_machine has_messages validates_as_email_address has_emails)
5
+ config.plugins = %w(plugin_tracker state_machine has_messages validates_as_email_address has_emails)
7
6
  config.cache_classes = false
8
7
  config.whiny_nils = true
9
8
  config.action_mailer.delivery_method = :test
9
+ config.action_controller.session = {:key => 'rails_session', :secret => 'd229e4d22437432705ab3985d4d246'}
10
10
  end
@@ -1,9 +1,18 @@
1
1
  class MigrateHasMessagesToVersion2 < ActiveRecord::Migration
2
2
  def self.up
3
- Rails::Plugin.find(:has_messages).migrate(2)
3
+ ActiveRecord::Migrator.new(:up, "#{directory}/db/migrate", 0).migrations.each do |migration|
4
+ migration.migrate(:up)
5
+ end
4
6
  end
5
7
 
6
8
  def self.down
7
- Rails::Plugin.find(:has_messages).migrate(0)
9
+ ActiveRecord::Migrator.new(:up, "#{directory}/db/migrate", 0).migrations.each do |migration|
10
+ migration.migrate(:down)
11
+ end
8
12
  end
13
+
14
+ private
15
+ def self.directory
16
+ Rails.plugins.find {|plugin| plugin.name == 'has_messages'}.directory
17
+ end
9
18
  end
@@ -1,9 +1,13 @@
1
1
  class MigrateHasEmailsToVersion1 < ActiveRecord::Migration
2
2
  def self.up
3
- Rails::Plugin.find(:has_emails).migrate(1)
3
+ ActiveRecord::Migrator.new(:up, "#{Rails.root}/../../db/migrate", 0).migrations.each do |migration|
4
+ migration.migrate(:up)
5
+ end
4
6
  end
5
7
 
6
8
  def self.down
7
- Rails::Plugin.find(:has_emails).migrate(0)
9
+ ActiveRecord::Migrator.new(:up, "#{Rails.root}/../../db/migrate", 0).migrations.each do |migration|
10
+ migration.migrate(:down)
11
+ end
8
12
  end
9
13
  end
@@ -0,0 +1,5 @@
1
+ class << Rails
2
+ attr_accessor :plugins
3
+ end
4
+
5
+ Rails.plugins = initializer.loaded_plugins
@@ -1,6 +1,6 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
2
 
3
- class EmailAddressByDefaultFunctionalTest < Test::Unit::TestCase
3
+ class EmailAddressByDefaultFunctionalTest < ActiveSupport::TestCase
4
4
  def setup
5
5
  @email_address = create_email_address
6
6
  end
@@ -22,7 +22,7 @@ class EmailAddressByDefaultFunctionalTest < Test::Unit::TestCase
22
22
  end
23
23
  end
24
24
 
25
- class EmailAddressFunctionalTest < Test::Unit::TestCase
25
+ class EmailAddressFunctionalTest < ActiveSupport::TestCase
26
26
  def setup
27
27
  @email_address = create_email_address
28
28
  end
@@ -40,7 +40,7 @@ class EmailAddressFunctionalTest < Test::Unit::TestCase
40
40
  end
41
41
  end
42
42
 
43
- class EmailAddressWithUnsentEmails < Test::Unit::TestCase
43
+ class EmailAddressWithUnsentEmails < ActiveSupport::TestCase
44
44
  def setup
45
45
  @email_address = create_email_address
46
46
  @sent_email = create_email(:sender => @email_address, :to => create_email_address(:spec => 'jane.smith@gmail.com'))
@@ -58,7 +58,7 @@ class EmailAddressWithUnsentEmails < Test::Unit::TestCase
58
58
  end
59
59
  end
60
60
 
61
- class EmailAddressWithSentEmails < Test::Unit::TestCase
61
+ class EmailAddressWithSentEmails < ActiveSupport::TestCase
62
62
  def setup
63
63
  @email_address = create_email_address
64
64
  @to = create_email_address(:spec => 'jane.smith@gmail.com')
@@ -80,7 +80,7 @@ class EmailAddressWithSentEmails < Test::Unit::TestCase
80
80
  end
81
81
  end
82
82
 
83
- class EmailAddressWithReceivedEmails < Test::Unit::TestCase
83
+ class EmailAddressWithReceivedEmails < ActiveSupport::TestCase
84
84
  def setup
85
85
  @sender = create_email_address
86
86
  @email_address = create_email_address(:spec => 'jane.smith@gmail.com')
@@ -99,7 +99,7 @@ class EmailAddressWithReceivedEmails < Test::Unit::TestCase
99
99
  end
100
100
  end
101
101
 
102
- class EmailAddressWithHiddenEmailsTest < Test::Unit::TestCase
102
+ class EmailAddressWithHiddenEmailsTest < ActiveSupport::TestCase
103
103
  def setup
104
104
  @email_address = create_email_address
105
105
  @friend = create_email_address(:spec => 'jane.smith@gmail.com')
@@ -1,21 +1,17 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
2
 
3
- class ActionMailerTest < Test::Unit::TestCase
4
- class TestMailer < ActionMailer::Base
5
- def signed_up(recipient)
6
- subject 'Thanks for signing up'
7
- from 'MyWebApp <welcome@mywebapp.com>'
8
- recipients recipient
9
- cc 'Nobody <nobody@mywebapp.com>'
10
- bcc 'root@mywebapp.com'
11
- body 'Congratulations!'
12
- end
3
+ class TestMailer < ActionMailer::Base
4
+ def signed_up(recipient)
5
+ subject 'Thanks for signing up'
6
+ from 'MyWebApp <welcome@mywebapp.com>'
7
+ recipients recipient
8
+ cc 'Nobody <nobody@mywebapp.com>'
9
+ bcc 'root@mywebapp.com'
10
+ body 'Congratulations!'
13
11
  end
14
-
15
- def setup
16
- ActionMailer::Base.deliveries = []
17
- end
18
-
12
+ end
13
+
14
+ class TestMailerTest < ActionMailer::TestCase
19
15
  def test_should_use_camelized_application_name_for_default_subject_prefix
20
16
  assert_equal '[AppRoot] ', ActionMailer::Base.default_subject_prefix
21
17
  end
@@ -1,6 +1,6 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
2
 
3
- class EmailAddressByDefaultTest < Test::Unit::TestCase
3
+ class EmailAddressByDefaultTest < ActiveSupport::TestCase
4
4
  def setup
5
5
  @email_address = EmailAddress.new
6
6
  end
@@ -14,7 +14,7 @@ class EmailAddressByDefaultTest < Test::Unit::TestCase
14
14
  end
15
15
  end
16
16
 
17
- class EmailAddressTest < Test::Unit::TestCase
17
+ class EmailAddressTest < ActiveSupport::TestCase
18
18
  def test_should_be_valid_with_a_set_of_valid_attributes
19
19
  email_address = new_email_address
20
20
  assert email_address.valid?
@@ -79,7 +79,7 @@ class EmailAddressTest < Test::Unit::TestCase
79
79
  end
80
80
  end
81
81
 
82
- class EmailAddressFromAddressTest < Test::Unit::TestCase
82
+ class EmailAddressFromAddressTest < ActiveSupport::TestCase
83
83
  def setup
84
84
  @email_address = EmailAddress.new(:address => 'John Smith <john.smith@gmail.com>')
85
85
  end
@@ -97,7 +97,7 @@ class EmailAddressFromAddressTest < Test::Unit::TestCase
97
97
  end
98
98
  end
99
99
 
100
- class EmailAddressFromAddressWithoutNameTest < Test::Unit::TestCase
100
+ class EmailAddressFromAddressWithoutNameTest < ActiveSupport::TestCase
101
101
  def setup
102
102
  @email_address = EmailAddress.new(:address => 'john.smith@gmail.com')
103
103
  end
@@ -115,7 +115,7 @@ class EmailAddressFromAddressWithoutNameTest < Test::Unit::TestCase
115
115
  end
116
116
  end
117
117
 
118
- class EmailAddressAfterBeingCreatedTest < Test::Unit::TestCase
118
+ class EmailAddressAfterBeingCreatedTest < ActiveSupport::TestCase
119
119
  def setup
120
120
  @email_address = create_email_address(:name => 'John Smith', :spec => 'john.smith@gmail.com')
121
121
  end
@@ -133,7 +133,7 @@ class EmailAddressAfterBeingCreatedTest < Test::Unit::TestCase
133
133
  end
134
134
  end
135
135
 
136
- class EmailAddressAsAClassTest < Test::Unit::TestCase
136
+ class EmailAddressAsAClassTest < ActiveSupport::TestCase
137
137
  def test_should_be_able_to_split_address_containing_name
138
138
  name, spec = EmailAddress.split_address('John Smith <john.smith@gmail.com>')
139
139
  assert_equal 'John Smith', name
@@ -1,6 +1,6 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../test_helper')
2
2
 
3
- class EmailAfterBeingDeliveredTest < Test::Unit::TestCase
3
+ class EmailAfterBeingDeliveredTest < ActiveSupport::TestCase
4
4
  def setup
5
5
  ActionMailer::Base.deliveries = []
6
6
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: has_emails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Pfeifer
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-01-11 00:00:00 -05:00
12
+ date: 2009-04-19 00:00:00 -04: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: 0.3.1
23
+ version: 0.4.0
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: validates_as_email_address
@@ -65,9 +65,10 @@ files:
65
65
  - test/app_root/db/migrate/001_migrate_has_messages_to_version_2.rb
66
66
  - test/app_root/config
67
67
  - test/app_root/config/environment.rb
68
- - test/app_root/app
69
- - test/app_root/app/models
70
- - test/app_root/app/models/empty
68
+ - test/app_root/vendor
69
+ - test/app_root/vendor/plugins
70
+ - test/app_root/vendor/plugins/plugin_tracker
71
+ - test/app_root/vendor/plugins/plugin_tracker/init.rb
71
72
  - CHANGELOG.rdoc
72
73
  - init.rb
73
74
  - LICENSE
@@ -95,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
95
96
  requirements: []
96
97
 
97
98
  rubyforge_project: pluginaweek
98
- rubygems_version: 1.2.0
99
+ rubygems_version: 1.3.1
99
100
  signing_key:
100
101
  specification_version: 2
101
102
  summary: Demonstrates a reference implementation for sending emails with logging and asynchronous support.
File without changes