resque_mailer 1.0.1 → 2.0.0
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/CHANGELOG.md +15 -0
 - data/Gemfile +17 -0
 - data/Gemfile.lock +83 -0
 - data/LICENSE +1 -1
 - data/README.md +97 -0
 - data/Rakefile +22 -37
 - data/VERSION +1 -1
 - data/lib/resque_mailer.rb +63 -5
 - data/resque_mailer.gemspec +77 -0
 - data/spec/{rails3_spec.rb → resque_mailer_spec.rb} +37 -14
 - data/spec/spec_helper.rb +4 -7
 - metadata +127 -36
 - data/README.rdoc +0 -78
 - data/lib/resque_mailer/common.rb +0 -34
 - data/lib/resque_mailer/rails2.rb +0 -25
 - data/lib/resque_mailer/rails3.rb +0 -42
 - data/spec/common_spec.rb +0 -26
 - data/spec/rails2_spec.rb +0 -71
 
    
        data/CHANGELOG.md
    ADDED
    
    | 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ### 2.0.0
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            * Removed support for legacy Rails 2.x applications (please use v1.x)
         
     | 
| 
      
 4 
     | 
    
         
            +
            * Removed mailer proxy, return Mail::Message object
         
     | 
| 
      
 5 
     | 
    
         
            +
            * Reorganize and modernize gem structure, add bundler and move to RSpec 2.x
         
     | 
| 
      
 6 
     | 
    
         
            +
            * Queue target (::Resque) can now be overridden for testing (Joshua
         
     | 
| 
      
 7 
     | 
    
         
            +
              Clayton)
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            ### 1.0.1 / 2010-12-21
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            * Respect ActionMailer::Base.perform_deliveries
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            ### v1.0.0 / 2010-07-28
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            * Added support for Rails 3.x (Marcin Kulik)
         
     | 
    
        data/Gemfile
    ADDED
    
    | 
         @@ -0,0 +1,17 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            source 'http://rubygems.org'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # Add dependencies required to use your gem here.
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Example:
         
     | 
| 
      
 5 
     | 
    
         
            +
            #   gem 'activesupport', '>= 2.3.5'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            gem 'resque', '>= 1.2.3'
         
     | 
| 
      
 8 
     | 
    
         
            +
            gem 'actionmailer', '>= 3.0.0'
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            # Add dependencies to develop your gem here.
         
     | 
| 
      
 11 
     | 
    
         
            +
            # Include everything needed to run rake, tests, features, etc.
         
     | 
| 
      
 12 
     | 
    
         
            +
            group :development do
         
     | 
| 
      
 13 
     | 
    
         
            +
              gem 'rspec', '>= 2.6.0'
         
     | 
| 
      
 14 
     | 
    
         
            +
              gem 'yard', '>= 0.6.0'
         
     | 
| 
      
 15 
     | 
    
         
            +
              gem 'bundler', '~> 1.0.0'
         
     | 
| 
      
 16 
     | 
    
         
            +
              gem 'jeweler', '~> 1.6.2'
         
     | 
| 
      
 17 
     | 
    
         
            +
            end
         
     | 
    
        data/Gemfile.lock
    ADDED
    
    | 
         @@ -0,0 +1,83 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            GEM
         
     | 
| 
      
 2 
     | 
    
         
            +
              remote: http://rubygems.org/
         
     | 
| 
      
 3 
     | 
    
         
            +
              specs:
         
     | 
| 
      
 4 
     | 
    
         
            +
                abstract (1.0.0)
         
     | 
| 
      
 5 
     | 
    
         
            +
                actionmailer (3.0.9)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  actionpack (= 3.0.9)
         
     | 
| 
      
 7 
     | 
    
         
            +
                  mail (~> 2.2.19)
         
     | 
| 
      
 8 
     | 
    
         
            +
                actionpack (3.0.9)
         
     | 
| 
      
 9 
     | 
    
         
            +
                  activemodel (= 3.0.9)
         
     | 
| 
      
 10 
     | 
    
         
            +
                  activesupport (= 3.0.9)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  builder (~> 2.1.2)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  erubis (~> 2.6.6)
         
     | 
| 
      
 13 
     | 
    
         
            +
                  i18n (~> 0.5.0)
         
     | 
| 
      
 14 
     | 
    
         
            +
                  rack (~> 1.2.1)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  rack-mount (~> 0.6.14)
         
     | 
| 
      
 16 
     | 
    
         
            +
                  rack-test (~> 0.5.7)
         
     | 
| 
      
 17 
     | 
    
         
            +
                  tzinfo (~> 0.3.23)
         
     | 
| 
      
 18 
     | 
    
         
            +
                activemodel (3.0.9)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  activesupport (= 3.0.9)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  builder (~> 2.1.2)
         
     | 
| 
      
 21 
     | 
    
         
            +
                  i18n (~> 0.5.0)
         
     | 
| 
      
 22 
     | 
    
         
            +
                activesupport (3.0.9)
         
     | 
| 
      
 23 
     | 
    
         
            +
                builder (2.1.2)
         
     | 
| 
      
 24 
     | 
    
         
            +
                diff-lcs (1.1.2)
         
     | 
| 
      
 25 
     | 
    
         
            +
                erubis (2.6.6)
         
     | 
| 
      
 26 
     | 
    
         
            +
                  abstract (>= 1.0.0)
         
     | 
| 
      
 27 
     | 
    
         
            +
                git (1.2.5)
         
     | 
| 
      
 28 
     | 
    
         
            +
                i18n (0.5.0)
         
     | 
| 
      
 29 
     | 
    
         
            +
                jeweler (1.6.2)
         
     | 
| 
      
 30 
     | 
    
         
            +
                  bundler (~> 1.0)
         
     | 
| 
      
 31 
     | 
    
         
            +
                  git (>= 1.2.5)
         
     | 
| 
      
 32 
     | 
    
         
            +
                  rake
         
     | 
| 
      
 33 
     | 
    
         
            +
                json (1.5.3)
         
     | 
| 
      
 34 
     | 
    
         
            +
                mail (2.2.19)
         
     | 
| 
      
 35 
     | 
    
         
            +
                  activesupport (>= 2.3.6)
         
     | 
| 
      
 36 
     | 
    
         
            +
                  i18n (>= 0.4.0)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  mime-types (~> 1.16)
         
     | 
| 
      
 38 
     | 
    
         
            +
                  treetop (~> 1.4.8)
         
     | 
| 
      
 39 
     | 
    
         
            +
                mime-types (1.16)
         
     | 
| 
      
 40 
     | 
    
         
            +
                polyglot (0.3.1)
         
     | 
| 
      
 41 
     | 
    
         
            +
                rack (1.2.3)
         
     | 
| 
      
 42 
     | 
    
         
            +
                rack-mount (0.6.14)
         
     | 
| 
      
 43 
     | 
    
         
            +
                  rack (>= 1.0.0)
         
     | 
| 
      
 44 
     | 
    
         
            +
                rack-test (0.5.7)
         
     | 
| 
      
 45 
     | 
    
         
            +
                  rack (>= 1.0)
         
     | 
| 
      
 46 
     | 
    
         
            +
                rake (0.9.2)
         
     | 
| 
      
 47 
     | 
    
         
            +
                redis (2.2.1)
         
     | 
| 
      
 48 
     | 
    
         
            +
                redis-namespace (1.0.3)
         
     | 
| 
      
 49 
     | 
    
         
            +
                  redis (< 3.0.0)
         
     | 
| 
      
 50 
     | 
    
         
            +
                resque (1.17.1)
         
     | 
| 
      
 51 
     | 
    
         
            +
                  json (>= 1.4.6, < 1.6)
         
     | 
| 
      
 52 
     | 
    
         
            +
                  redis-namespace (~> 1.0.2)
         
     | 
| 
      
 53 
     | 
    
         
            +
                  sinatra (>= 0.9.2)
         
     | 
| 
      
 54 
     | 
    
         
            +
                  vegas (~> 0.1.2)
         
     | 
| 
      
 55 
     | 
    
         
            +
                rspec (2.6.0)
         
     | 
| 
      
 56 
     | 
    
         
            +
                  rspec-core (~> 2.6.0)
         
     | 
| 
      
 57 
     | 
    
         
            +
                  rspec-expectations (~> 2.6.0)
         
     | 
| 
      
 58 
     | 
    
         
            +
                  rspec-mocks (~> 2.6.0)
         
     | 
| 
      
 59 
     | 
    
         
            +
                rspec-core (2.6.4)
         
     | 
| 
      
 60 
     | 
    
         
            +
                rspec-expectations (2.6.0)
         
     | 
| 
      
 61 
     | 
    
         
            +
                  diff-lcs (~> 1.1.2)
         
     | 
| 
      
 62 
     | 
    
         
            +
                rspec-mocks (2.6.0)
         
     | 
| 
      
 63 
     | 
    
         
            +
                sinatra (1.2.6)
         
     | 
| 
      
 64 
     | 
    
         
            +
                  rack (~> 1.1)
         
     | 
| 
      
 65 
     | 
    
         
            +
                  tilt (>= 1.2.2, < 2.0)
         
     | 
| 
      
 66 
     | 
    
         
            +
                tilt (1.3.2)
         
     | 
| 
      
 67 
     | 
    
         
            +
                treetop (1.4.9)
         
     | 
| 
      
 68 
     | 
    
         
            +
                  polyglot (>= 0.3.1)
         
     | 
| 
      
 69 
     | 
    
         
            +
                tzinfo (0.3.28)
         
     | 
| 
      
 70 
     | 
    
         
            +
                vegas (0.1.8)
         
     | 
| 
      
 71 
     | 
    
         
            +
                  rack (>= 1.0.0)
         
     | 
| 
      
 72 
     | 
    
         
            +
                yard (0.7.2)
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
            PLATFORMS
         
     | 
| 
      
 75 
     | 
    
         
            +
              ruby
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
            DEPENDENCIES
         
     | 
| 
      
 78 
     | 
    
         
            +
              actionmailer (>= 3.0.0)
         
     | 
| 
      
 79 
     | 
    
         
            +
              bundler (~> 1.0.0)
         
     | 
| 
      
 80 
     | 
    
         
            +
              jeweler (~> 1.6.2)
         
     | 
| 
      
 81 
     | 
    
         
            +
              resque (>= 1.2.3)
         
     | 
| 
      
 82 
     | 
    
         
            +
              rspec (>= 2.6.0)
         
     | 
| 
      
 83 
     | 
    
         
            +
              yard (>= 0.6.0)
         
     | 
    
        data/LICENSE
    CHANGED
    
    
    
        data/README.md
    ADDED
    
    | 
         @@ -0,0 +1,97 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # ResqueMailer
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            A gem plugin which allows messages prepared by ActionMailer to be delivered
         
     | 
| 
      
 4 
     | 
    
         
            +
            asynchronously. Assumes you're using Resque (http://github.com/defunkt/resque)
         
     | 
| 
      
 5 
     | 
    
         
            +
            for your background jobs.
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            Note that recent (2.0+) versions of Resque::Mailer only work with Rails 3.x.
         
     | 
| 
      
 8 
     | 
    
         
            +
            For a version compatible with Rails 2, specify v1.x in your Gemfile.
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            ## Usage
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            Include Resque::Mailer in your ActionMailer subclass(es) like this:
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                class MyMailer < ActionMailer::Base
         
     | 
| 
      
 15 
     | 
    
         
            +
                  include Resque::Mailer
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            Now, when <tt>MyMailer.subject_email(params).deliver</tt> is called, an entry
         
     | 
| 
      
 19 
     | 
    
         
            +
            will be created in the job queue. Your Resque workers will be able to deliver
         
     | 
| 
      
 20 
     | 
    
         
            +
            this message for you. The queue we're using is imaginatively named +mailer+,
         
     | 
| 
      
 21 
     | 
    
         
            +
            so just make sure your workers know about it and are loading your environment:
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                QUEUE=mailer rake environment resque:work
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            Note that you can still have mail delivered synchronously by using the bang
         
     | 
| 
      
 26 
     | 
    
         
            +
            method variant:
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                MyMailer.subject_email(params).deliver!
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            Oh, by the way. Don't forget that your async mailer jobs will be processed by
         
     | 
| 
      
 31 
     | 
    
         
            +
            a separate worker. This means that you should resist the temptation to pass
         
     | 
| 
      
 32 
     | 
    
         
            +
            database-backed objects as parameters in your mailer and instead pass record
         
     | 
| 
      
 33 
     | 
    
         
            +
            identifiers. Then, in your delivery method, you can look up the record from
         
     | 
| 
      
 34 
     | 
    
         
            +
            the id and use it as needed.
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            If you want to set a different default queue name for your mailer, you can 
         
     | 
| 
      
 37 
     | 
    
         
            +
            change the <tt>default_queue_name</tt> property like so:
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                # config/initializers/resque_mailer.rb
         
     | 
| 
      
 40 
     | 
    
         
            +
                Resque::Mailer.default_queue_name = 'application_specific_mailer'
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
            This is useful when you are running more than one application using
         
     | 
| 
      
 43 
     | 
    
         
            +
            resque_mailer in a shared environment. You will need to use the new queue
         
     | 
| 
      
 44 
     | 
    
         
            +
            name when starting your workers.
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                QUEUE=application_specific_mailer rake environment resque:work
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
            ## Resque::Mailer as a Project Default
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
            If you have a variety of mailers in your application and want all of them to use
         
     | 
| 
      
 51 
     | 
    
         
            +
            Resque::Mailer by default, you can subclass ActionMailer::Base and have your
         
     | 
| 
      
 52 
     | 
    
         
            +
            other mailers inherit from an AsyncMailer:
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                # config/initializers/resque_mailer.rb
         
     | 
| 
      
 55 
     | 
    
         
            +
                class AsyncMailer < ActionMailer::Base
         
     | 
| 
      
 56 
     | 
    
         
            +
                  include Resque::Mailer
         
     | 
| 
      
 57 
     | 
    
         
            +
                end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
                # app/mailers/example_mailer.rb
         
     | 
| 
      
 60 
     | 
    
         
            +
                class ExampleMailer < AsyncMailer
         
     | 
| 
      
 61 
     | 
    
         
            +
                  def say_hello(user)
         
     | 
| 
      
 62 
     | 
    
         
            +
                    # ...
         
     | 
| 
      
 63 
     | 
    
         
            +
                  end
         
     | 
| 
      
 64 
     | 
    
         
            +
                end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
            ## Installation
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
            Install it as a plugin or as a gem plugin from Gemcutter:
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                gem install resque_mailer
         
     | 
| 
      
 71 
     | 
    
         
            +
                script/plugin install git://github.com/zapnap/resque_mailer.git
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
                # Rails 3: add it to your Gemfile
         
     | 
| 
      
 74 
     | 
    
         
            +
                gem 'resque_mailer'
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
            ## Testing
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
            You don't want to be sending actual emails in the test environment, so you can
         
     | 
| 
      
 79 
     | 
    
         
            +
            configure the environments that should be excluded like so:
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
                # config/initializers/resque_mailer.rb
         
     | 
| 
      
 82 
     | 
    
         
            +
                Resque::Mailer.excluded_environments = [:test, :cucumber]
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
            ## Note on Patches / Pull Requests
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
            * Fork the project.
         
     | 
| 
      
 87 
     | 
    
         
            +
            * Make your feature addition or bug fix.
         
     | 
| 
      
 88 
     | 
    
         
            +
            * Add tests for it. This is important so I don't break it in a future version unintentionally.
         
     | 
| 
      
 89 
     | 
    
         
            +
            * Commit, do not mess with rakefile, version, or history.
         
     | 
| 
      
 90 
     | 
    
         
            +
              (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
         
     | 
| 
      
 91 
     | 
    
         
            +
            * Send me a pull request. Bonus points for topic branches.
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
            ## Credits
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
            This work was originally inspired by delayed_job_mailer
         
     | 
| 
      
 96 
     | 
    
         
            +
            (http://github.com/andersondias/delayed_job_mailer) by Anderson Dias. Enhanced
         
     | 
| 
      
 97 
     | 
    
         
            +
            and modified to work with Resque by Nick Plante.
         
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -1,4 +1,16 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # encoding: utf-8
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
       1 
3 
     | 
    
         
             
            require 'rubygems'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'bundler'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            begin
         
     | 
| 
      
 7 
     | 
    
         
            +
              Bundler.setup(:default, :development)
         
     | 
| 
      
 8 
     | 
    
         
            +
            rescue Bundler::BundlerError => e
         
     | 
| 
      
 9 
     | 
    
         
            +
              $stderr.puts e.message
         
     | 
| 
      
 10 
     | 
    
         
            +
              $stderr.puts "Run `bundle install` to install missing gems"
         
     | 
| 
      
 11 
     | 
    
         
            +
              exit e.status_code
         
     | 
| 
      
 12 
     | 
    
         
            +
            end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
       2 
14 
     | 
    
         
             
            require 'rake'
         
     | 
| 
       3 
15 
     | 
    
         | 
| 
       4 
16 
     | 
    
         
             
            begin
         
     | 
| 
         @@ -9,52 +21,25 @@ begin 
     | 
|
| 
       9 
21 
     | 
    
         
             
                gem.description = %Q{Rails plugin for sending asynchronous email with ActionMailer and Resque}
         
     | 
| 
       10 
22 
     | 
    
         
             
                gem.email = "nap@zerosum.org"
         
     | 
| 
       11 
23 
     | 
    
         
             
                gem.homepage = "http://github.com/zapnap/resque_mailer"
         
     | 
| 
       12 
     | 
    
         
            -
                gem.authors = ["Nick Plante" 
     | 
| 
       13 
     | 
    
         
            -
                gem.add_development_dependency "rspec", ">=  
     | 
| 
      
 24 
     | 
    
         
            +
                gem.authors = ["Nick Plante"]
         
     | 
| 
      
 25 
     | 
    
         
            +
                gem.add_development_dependency "rspec", ">= 2.6.0"
         
     | 
| 
       14 
26 
     | 
    
         
             
                gem.add_development_dependency "resque", ">= 1.2.3"
         
     | 
| 
       15 
     | 
    
         
            -
                gem.add_development_dependency "actionmailer", ">=  
     | 
| 
      
 27 
     | 
    
         
            +
                gem.add_development_dependency "actionmailer", ">= 3.0.0"
         
     | 
| 
       16 
28 
     | 
    
         
             
                # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
         
     | 
| 
       17 
29 
     | 
    
         
             
              end
         
     | 
| 
       18 
     | 
    
         
            -
              Jeweler:: 
     | 
| 
      
 30 
     | 
    
         
            +
              Jeweler::RubygemsDotOrgTasks.new
         
     | 
| 
       19 
31 
     | 
    
         
             
            rescue LoadError
         
     | 
| 
       20 
32 
     | 
    
         
             
              puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
         
     | 
| 
       21 
33 
     | 
    
         
             
            end
         
     | 
| 
       22 
34 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
              puts "Using RSpec 1.x / Rails 2.x"
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
              desc "Run specs for Rails 2.x"
         
     | 
| 
       29 
     | 
    
         
            -
              Spec::Rake::SpecTask.new(:spec) do |spec|
         
     | 
| 
       30 
     | 
    
         
            -
                spec.spec_files = FileList['spec/common_spec.rb', 'spec/rails2_spec.rb']
         
     | 
| 
       31 
     | 
    
         
            -
              end
         
     | 
| 
       32 
     | 
    
         
            -
            rescue LoadError
         
     | 
| 
       33 
     | 
    
         
            -
              puts "RSpec 1.x unavailable"
         
     | 
| 
       34 
     | 
    
         
            -
            end
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
            begin
         
     | 
| 
       37 
     | 
    
         
            -
              require 'rspec/core'
         
     | 
| 
       38 
     | 
    
         
            -
              require 'rspec/core/rake_task'
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
              puts "Using RSpec 2.x / Rails 3.x"
         
     | 
| 
      
 35 
     | 
    
         
            +
            require 'rspec/core'
         
     | 
| 
      
 36 
     | 
    
         
            +
            require 'rspec/core/rake_task'
         
     | 
| 
       41 
37 
     | 
    
         | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
               
     | 
| 
       44 
     | 
    
         
            -
                spec.pattern = ["spec/common_spec.rb","spec/rails3_spec.rb"]
         
     | 
| 
       45 
     | 
    
         
            -
              end
         
     | 
| 
       46 
     | 
    
         
            -
            rescue LoadError
         
     | 
| 
       47 
     | 
    
         
            -
              puts "RSpec 2.x unavailable"
         
     | 
| 
      
 38 
     | 
    
         
            +
            RSpec::Core::RakeTask.new(:spec) do |spec|
         
     | 
| 
      
 39 
     | 
    
         
            +
              spec.pattern = ["spec/resque_mailer_spec.rb"]
         
     | 
| 
       48 
40 
     | 
    
         
             
            end
         
     | 
| 
       49 
41 
     | 
    
         | 
| 
       50 
42 
     | 
    
         
             
            task :default => :spec
         
     | 
| 
       51 
43 
     | 
    
         | 
| 
       52 
     | 
    
         
            -
            require ' 
     | 
| 
       53 
     | 
    
         
            -
            Rake:: 
     | 
| 
       54 
     | 
    
         
            -
              version = File.exist?('VERSION') ? File.read('VERSION') : ""
         
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
              rdoc.rdoc_dir = 'rdoc'
         
     | 
| 
       57 
     | 
    
         
            -
              rdoc.title = "resque_mailer #{version}"
         
     | 
| 
       58 
     | 
    
         
            -
              rdoc.rdoc_files.include('README*')
         
     | 
| 
       59 
     | 
    
         
            -
              rdoc.rdoc_files.include('lib/**/*.rb')
         
     | 
| 
       60 
     | 
    
         
            -
            end
         
     | 
| 
      
 44 
     | 
    
         
            +
            require 'yard'
         
     | 
| 
      
 45 
     | 
    
         
            +
            YARD::Rake::YardocTask.new
         
     | 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            2.0.0
         
     | 
    
        data/lib/resque_mailer.rb
    CHANGED
    
    | 
         @@ -1,7 +1,65 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            module Resque
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Mailer
         
     | 
| 
      
 3 
     | 
    
         
            +
                class << self
         
     | 
| 
      
 4 
     | 
    
         
            +
                  attr_accessor :default_queue_name, :default_queue_target
         
     | 
| 
      
 5 
     | 
    
         
            +
                  attr_reader :excluded_environments
         
     | 
| 
       2 
6 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
                  def excluded_environments=(envs)
         
     | 
| 
      
 8 
     | 
    
         
            +
                    @excluded_environments = [*envs].map { |e| e.to_sym }
         
     | 
| 
      
 9 
     | 
    
         
            +
                  end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                  def included(base)
         
     | 
| 
      
 12 
     | 
    
         
            +
                    base.extend(ClassMethods)
         
     | 
| 
      
 13 
     | 
    
         
            +
                  end
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                self.default_queue_target = ::Resque
         
     | 
| 
      
 17 
     | 
    
         
            +
                self.default_queue_name = "mailer"
         
     | 
| 
      
 18 
     | 
    
         
            +
                self.excluded_environments = [:test]
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                module ClassMethods
         
     | 
| 
      
 21 
     | 
    
         
            +
                  def current_env
         
     | 
| 
      
 22 
     | 
    
         
            +
                    ::Rails.env
         
     | 
| 
      
 23 
     | 
    
         
            +
                  end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                  def method_missing(method_name, *args)
         
     | 
| 
      
 26 
     | 
    
         
            +
                    return super if environment_excluded?
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                    if action_methods.include?(method_name.to_s)
         
     | 
| 
      
 29 
     | 
    
         
            +
                      resque = self.resque
         
     | 
| 
      
 30 
     | 
    
         
            +
                      mailer_class = self
         
     | 
| 
      
 31 
     | 
    
         
            +
                      super.tap do |resque_mail|
         
     | 
| 
      
 32 
     | 
    
         
            +
                        resque_mail.class_eval do
         
     | 
| 
      
 33 
     | 
    
         
            +
                          define_method(:deliver) do
         
     | 
| 
      
 34 
     | 
    
         
            +
                            resque.enqueue(mailer_class, method_name, *args)
         
     | 
| 
      
 35 
     | 
    
         
            +
                            self
         
     | 
| 
      
 36 
     | 
    
         
            +
                          end
         
     | 
| 
      
 37 
     | 
    
         
            +
                        end
         
     | 
| 
      
 38 
     | 
    
         
            +
                      end
         
     | 
| 
      
 39 
     | 
    
         
            +
                    else
         
     | 
| 
      
 40 
     | 
    
         
            +
                      super
         
     | 
| 
      
 41 
     | 
    
         
            +
                    end
         
     | 
| 
      
 42 
     | 
    
         
            +
                  end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                  def perform(action, *args)
         
     | 
| 
      
 45 
     | 
    
         
            +
                    self.send(:new, action, *args).message.deliver!
         
     | 
| 
      
 46 
     | 
    
         
            +
                  end
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                  def environment_excluded?
         
     | 
| 
      
 49 
     | 
    
         
            +
                    !ActionMailer::Base.perform_deliveries || excluded_environment?(current_env)
         
     | 
| 
      
 50 
     | 
    
         
            +
                  end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                  def queue
         
     | 
| 
      
 53 
     | 
    
         
            +
                    ::Resque::Mailer.default_queue_name
         
     | 
| 
      
 54 
     | 
    
         
            +
                  end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                  def resque
         
     | 
| 
      
 57 
     | 
    
         
            +
                    ::Resque::Mailer.default_queue_target
         
     | 
| 
      
 58 
     | 
    
         
            +
                  end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                  def excluded_environment?(name)
         
     | 
| 
      
 61 
     | 
    
         
            +
                    ::Resque::Mailer.excluded_environments && ::Resque::Mailer.excluded_environments.include?(name.to_sym)
         
     | 
| 
      
 62 
     | 
    
         
            +
                  end
         
     | 
| 
      
 63 
     | 
    
         
            +
                end
         
     | 
| 
      
 64 
     | 
    
         
            +
              end
         
     | 
| 
       7 
65 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,77 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Generated by jeweler
         
     | 
| 
      
 2 
     | 
    
         
            +
            # DO NOT EDIT THIS FILE DIRECTLY
         
     | 
| 
      
 3 
     | 
    
         
            +
            # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
         
     | 
| 
      
 4 
     | 
    
         
            +
            # -*- encoding: utf-8 -*-
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            Gem::Specification.new do |s|
         
     | 
| 
      
 7 
     | 
    
         
            +
              s.name = %q{resque_mailer}
         
     | 
| 
      
 8 
     | 
    
         
            +
              s.version = "2.0.0"
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         
     | 
| 
      
 11 
     | 
    
         
            +
              s.authors = ["Nick Plante"]
         
     | 
| 
      
 12 
     | 
    
         
            +
              s.date = %q{2011-06-24}
         
     | 
| 
      
 13 
     | 
    
         
            +
              s.description = %q{Rails plugin for sending asynchronous email with ActionMailer and Resque}
         
     | 
| 
      
 14 
     | 
    
         
            +
              s.email = %q{nap@zerosum.org}
         
     | 
| 
      
 15 
     | 
    
         
            +
              s.extra_rdoc_files = [
         
     | 
| 
      
 16 
     | 
    
         
            +
                "LICENSE",
         
     | 
| 
      
 17 
     | 
    
         
            +
                "README.md"
         
     | 
| 
      
 18 
     | 
    
         
            +
              ]
         
     | 
| 
      
 19 
     | 
    
         
            +
              s.files = [
         
     | 
| 
      
 20 
     | 
    
         
            +
                ".document",
         
     | 
| 
      
 21 
     | 
    
         
            +
                "CHANGELOG.md",
         
     | 
| 
      
 22 
     | 
    
         
            +
                "Gemfile",
         
     | 
| 
      
 23 
     | 
    
         
            +
                "Gemfile.lock",
         
     | 
| 
      
 24 
     | 
    
         
            +
                "LICENSE",
         
     | 
| 
      
 25 
     | 
    
         
            +
                "README.md",
         
     | 
| 
      
 26 
     | 
    
         
            +
                "Rakefile",
         
     | 
| 
      
 27 
     | 
    
         
            +
                "VERSION",
         
     | 
| 
      
 28 
     | 
    
         
            +
                "lib/resque_mailer.rb",
         
     | 
| 
      
 29 
     | 
    
         
            +
                "rails/init.rb",
         
     | 
| 
      
 30 
     | 
    
         
            +
                "resque_mailer.gemspec",
         
     | 
| 
      
 31 
     | 
    
         
            +
                "spec/resque_mailer_spec.rb",
         
     | 
| 
      
 32 
     | 
    
         
            +
                "spec/spec.opts",
         
     | 
| 
      
 33 
     | 
    
         
            +
                "spec/spec_helper.rb"
         
     | 
| 
      
 34 
     | 
    
         
            +
              ]
         
     | 
| 
      
 35 
     | 
    
         
            +
              s.homepage = %q{http://github.com/zapnap/resque_mailer}
         
     | 
| 
      
 36 
     | 
    
         
            +
              s.require_paths = ["lib"]
         
     | 
| 
      
 37 
     | 
    
         
            +
              s.rubygems_version = %q{1.3.7}
         
     | 
| 
      
 38 
     | 
    
         
            +
              s.summary = %q{Rails plugin for sending asynchronous email with ActionMailer and Resque}
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
              if s.respond_to? :specification_version then
         
     | 
| 
      
 41 
     | 
    
         
            +
                current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
         
     | 
| 
      
 42 
     | 
    
         
            +
                s.specification_version = 3
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
         
     | 
| 
      
 45 
     | 
    
         
            +
                  s.add_runtime_dependency(%q<resque>, [">= 1.2.3"])
         
     | 
| 
      
 46 
     | 
    
         
            +
                  s.add_runtime_dependency(%q<actionmailer>, [">= 3.0.0"])
         
     | 
| 
      
 47 
     | 
    
         
            +
                  s.add_development_dependency(%q<rspec>, [">= 2.6.0"])
         
     | 
| 
      
 48 
     | 
    
         
            +
                  s.add_development_dependency(%q<yard>, [">= 0.6.0"])
         
     | 
| 
      
 49 
     | 
    
         
            +
                  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
         
     | 
| 
      
 50 
     | 
    
         
            +
                  s.add_development_dependency(%q<jeweler>, ["~> 1.6.2"])
         
     | 
| 
      
 51 
     | 
    
         
            +
                  s.add_development_dependency(%q<rspec>, [">= 2.6.0"])
         
     | 
| 
      
 52 
     | 
    
         
            +
                  s.add_development_dependency(%q<resque>, [">= 1.2.3"])
         
     | 
| 
      
 53 
     | 
    
         
            +
                  s.add_development_dependency(%q<actionmailer>, [">= 3.0.0"])
         
     | 
| 
      
 54 
     | 
    
         
            +
                else
         
     | 
| 
      
 55 
     | 
    
         
            +
                  s.add_dependency(%q<resque>, [">= 1.2.3"])
         
     | 
| 
      
 56 
     | 
    
         
            +
                  s.add_dependency(%q<actionmailer>, [">= 3.0.0"])
         
     | 
| 
      
 57 
     | 
    
         
            +
                  s.add_dependency(%q<rspec>, [">= 2.6.0"])
         
     | 
| 
      
 58 
     | 
    
         
            +
                  s.add_dependency(%q<yard>, [">= 0.6.0"])
         
     | 
| 
      
 59 
     | 
    
         
            +
                  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
         
     | 
| 
      
 60 
     | 
    
         
            +
                  s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
         
     | 
| 
      
 61 
     | 
    
         
            +
                  s.add_dependency(%q<rspec>, [">= 2.6.0"])
         
     | 
| 
      
 62 
     | 
    
         
            +
                  s.add_dependency(%q<resque>, [">= 1.2.3"])
         
     | 
| 
      
 63 
     | 
    
         
            +
                  s.add_dependency(%q<actionmailer>, [">= 3.0.0"])
         
     | 
| 
      
 64 
     | 
    
         
            +
                end
         
     | 
| 
      
 65 
     | 
    
         
            +
              else
         
     | 
| 
      
 66 
     | 
    
         
            +
                s.add_dependency(%q<resque>, [">= 1.2.3"])
         
     | 
| 
      
 67 
     | 
    
         
            +
                s.add_dependency(%q<actionmailer>, [">= 3.0.0"])
         
     | 
| 
      
 68 
     | 
    
         
            +
                s.add_dependency(%q<rspec>, [">= 2.6.0"])
         
     | 
| 
      
 69 
     | 
    
         
            +
                s.add_dependency(%q<yard>, [">= 0.6.0"])
         
     | 
| 
      
 70 
     | 
    
         
            +
                s.add_dependency(%q<bundler>, ["~> 1.0.0"])
         
     | 
| 
      
 71 
     | 
    
         
            +
                s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
         
     | 
| 
      
 72 
     | 
    
         
            +
                s.add_dependency(%q<rspec>, [">= 2.6.0"])
         
     | 
| 
      
 73 
     | 
    
         
            +
                s.add_dependency(%q<resque>, [">= 1.2.3"])
         
     | 
| 
      
 74 
     | 
    
         
            +
                s.add_dependency(%q<actionmailer>, [">= 3.0.0"])
         
     | 
| 
      
 75 
     | 
    
         
            +
              end
         
     | 
| 
      
 76 
     | 
    
         
            +
            end
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
         @@ -1,26 +1,45 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require File.join(File.expand_path(File.dirname(__FILE__)), 'spec_helper')
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
            ActionMailer::Base.delivery_method = :test
         
     | 
| 
      
 3 
     | 
    
         
            +
            class FakeResque
         
     | 
| 
      
 4 
     | 
    
         
            +
              def self.enqueue(*args); end
         
     | 
| 
      
 5 
     | 
    
         
            +
            end
         
     | 
| 
       8 
6 
     | 
    
         | 
| 
       9 
7 
     | 
    
         
             
            class Rails3Mailer < ActionMailer::Base
         
     | 
| 
       10 
8 
     | 
    
         
             
              include Resque::Mailer
         
     | 
| 
       11 
9 
     | 
    
         
             
              default :from => "from@example.org", :subject => "Subject"
         
     | 
| 
       12 
     | 
    
         
            -
              MAIL_PARAMS = { :to => " 
     | 
| 
      
 10 
     | 
    
         
            +
              MAIL_PARAMS = { :to => "crafty@example.org" }
         
     | 
| 
       13 
11 
     | 
    
         | 
| 
       14 
12 
     | 
    
         
             
              def test_mail(*params)
         
     | 
| 
       15 
13 
     | 
    
         
             
                mail(*params)
         
     | 
| 
       16 
14 
     | 
    
         
             
              end
         
     | 
| 
       17 
15 
     | 
    
         
             
            end
         
     | 
| 
       18 
16 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
            describe  
     | 
| 
      
 17 
     | 
    
         
            +
            describe Resque::Mailer do
         
     | 
| 
      
 18 
     | 
    
         
            +
              let(:resque) { FakeResque }
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
       20 
20 
     | 
    
         
             
              before do
         
     | 
| 
      
 21 
     | 
    
         
            +
                Resque::Mailer.default_queue_target = resque
         
     | 
| 
       21 
22 
     | 
    
         
             
                Rails3Mailer.stub(:current_env => :test)
         
     | 
| 
       22 
23 
     | 
    
         
             
              end
         
     | 
| 
       23 
24 
     | 
    
         | 
| 
      
 25 
     | 
    
         
            +
              describe "resque" do
         
     | 
| 
      
 26 
     | 
    
         
            +
                it "allows overriding of the default queue target (for testing)" do
         
     | 
| 
      
 27 
     | 
    
         
            +
                  Resque::Mailer.default_queue_target = FakeResque
         
     | 
| 
      
 28 
     | 
    
         
            +
                  Rails3Mailer.resque.should == FakeResque
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
              describe "queue" do
         
     | 
| 
      
 33 
     | 
    
         
            +
                it "defaults to the 'mailer' queue" do
         
     | 
| 
      
 34 
     | 
    
         
            +
                  Rails3Mailer.queue.should == "mailer"
         
     | 
| 
      
 35 
     | 
    
         
            +
                end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                it "allows overriding of the default queue name" do
         
     | 
| 
      
 38 
     | 
    
         
            +
                  Resque::Mailer.default_queue_name = "postal"
         
     | 
| 
      
 39 
     | 
    
         
            +
                  Rails3Mailer.queue.should == "postal"
         
     | 
| 
      
 40 
     | 
    
         
            +
                end
         
     | 
| 
      
 41 
     | 
    
         
            +
              end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
       24 
43 
     | 
    
         
             
              describe '#deliver' do
         
     | 
| 
       25 
44 
     | 
    
         
             
                before(:all) do
         
     | 
| 
       26 
45 
     | 
    
         
             
                  @delivery = lambda {
         
     | 
| 
         @@ -28,16 +47,12 @@ describe Rails3Mailer do 
     | 
|
| 
       28 
47 
     | 
    
         
             
                  }
         
     | 
| 
       29 
48 
     | 
    
         
             
                end
         
     | 
| 
       30 
49 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
                before(:each) do
         
     | 
| 
       32 
     | 
    
         
            -
                  Resque.stub(:enqueue)
         
     | 
| 
       33 
     | 
    
         
            -
                end
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
50 
     | 
    
         
             
                it 'should not deliver the email synchronously' do
         
     | 
| 
       36 
51 
     | 
    
         
             
                  lambda { @delivery.call }.should_not change(ActionMailer::Base.deliveries, :size)
         
     | 
| 
       37 
52 
     | 
    
         
             
                end
         
     | 
| 
       38 
53 
     | 
    
         | 
| 
       39 
54 
     | 
    
         
             
                it 'should place the deliver action on the Resque "mailer" queue' do
         
     | 
| 
       40 
     | 
    
         
            -
                   
     | 
| 
      
 55 
     | 
    
         
            +
                  resque.should_receive(:enqueue).with(Rails3Mailer, :test_mail, Rails3Mailer::MAIL_PARAMS)
         
     | 
| 
       41 
56 
     | 
    
         
             
                  @delivery.call
         
     | 
| 
       42 
57 
     | 
    
         
             
                end
         
     | 
| 
       43 
58 
     | 
    
         | 
| 
         @@ -45,7 +60,7 @@ describe Rails3Mailer do 
     | 
|
| 
       45 
60 
     | 
    
         
             
                  it 'should not deliver through Resque for excluded environments' do
         
     | 
| 
       46 
61 
     | 
    
         
             
                    Resque::Mailer.stub(:excluded_environments => [:custom])
         
     | 
| 
       47 
62 
     | 
    
         
             
                    Rails3Mailer.should_receive(:current_env).and_return(:custom)
         
     | 
| 
       48 
     | 
    
         
            -
                     
     | 
| 
      
 63 
     | 
    
         
            +
                    resque.should_not_receive(:enqueue)
         
     | 
| 
       49 
64 
     | 
    
         
             
                    @delivery.call
         
     | 
| 
       50 
65 
     | 
    
         
             
                  end
         
     | 
| 
       51 
66 
     | 
    
         
             
                end
         
     | 
| 
         @@ -57,11 +72,19 @@ describe Rails3Mailer do 
     | 
|
| 
       57 
72 
     | 
    
         
             
                end
         
     | 
| 
       58 
73 
     | 
    
         
             
              end
         
     | 
| 
       59 
74 
     | 
    
         | 
| 
       60 
     | 
    
         
            -
              describe " 
     | 
| 
      
 75 
     | 
    
         
            +
              describe "perform" do
         
     | 
| 
       61 
76 
     | 
    
         
             
                it 'should perform a queued mailer job' do
         
     | 
| 
       62 
77 
     | 
    
         
             
                  lambda {
         
     | 
| 
       63 
78 
     | 
    
         
             
                    Rails3Mailer.perform(:test_mail, Rails3Mailer::MAIL_PARAMS)
         
     | 
| 
       64 
79 
     | 
    
         
             
                  }.should change(ActionMailer::Base.deliveries, :size).by(1)
         
     | 
| 
       65 
80 
     | 
    
         
             
                end
         
     | 
| 
       66 
81 
     | 
    
         
             
              end
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
              describe "original mail methods" do
         
     | 
| 
      
 84 
     | 
    
         
            +
                it "should be preserved" do
         
     | 
| 
      
 85 
     | 
    
         
            +
                  Rails3Mailer.test_mail(Rails3Mailer::MAIL_PARAMS).subject.should == 'Subject'
         
     | 
| 
      
 86 
     | 
    
         
            +
                  Rails3Mailer.test_mail(Rails3Mailer::MAIL_PARAMS).from.should include('from@example.org')
         
     | 
| 
      
 87 
     | 
    
         
            +
                  Rails3Mailer.test_mail(Rails3Mailer::MAIL_PARAMS).to.should include('crafty@example.org')
         
     | 
| 
      
 88 
     | 
    
         
            +
                end
         
     | 
| 
      
 89 
     | 
    
         
            +
              end
         
     | 
| 
       67 
90 
     | 
    
         
             
            end
         
     | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | 
         @@ -1,12 +1,9 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            $LOAD_PATH.unshift(File.dirname(__FILE__))
         
     | 
| 
       2 
2 
     | 
    
         
             
            $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
            require ' 
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
              require 'rspec/autorun'
         
     | 
| 
       8 
     | 
    
         
            -
            rescue LoadError
         
     | 
| 
       9 
     | 
    
         
            -
              require 'spec/autorun'
         
     | 
| 
       10 
     | 
    
         
            -
            end
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'action_mailer'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'resque_mailer'
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'rspec/autorun'
         
     | 
| 
       11 
7 
     | 
    
         | 
| 
       12 
8 
     | 
    
         
             
            Resque::Mailer.excluded_environments = []
         
     | 
| 
      
 9 
     | 
    
         
            +
            ActionMailer::Base.delivery_method = :test
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,44 +1,137 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: resque_mailer
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              hash:  
     | 
| 
      
 4 
     | 
    
         
            +
              hash: 15
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       6 
6 
     | 
    
         
             
              segments: 
         
     | 
| 
       7 
     | 
    
         
            -
              -  
     | 
| 
      
 7 
     | 
    
         
            +
              - 2
         
     | 
| 
       8 
8 
     | 
    
         
             
              - 0
         
     | 
| 
       9 
     | 
    
         
            -
              -  
     | 
| 
       10 
     | 
    
         
            -
              version:  
     | 
| 
      
 9 
     | 
    
         
            +
              - 0
         
     | 
| 
      
 10 
     | 
    
         
            +
              version: 2.0.0
         
     | 
| 
       11 
11 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       12 
12 
     | 
    
         
             
            authors: 
         
     | 
| 
       13 
13 
     | 
    
         
             
            - Nick Plante
         
     | 
| 
       14 
     | 
    
         
            -
            - Marcin Kulik
         
     | 
| 
       15 
14 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       16 
15 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       17 
16 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       18 
17 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
            date:  
     | 
| 
      
 18 
     | 
    
         
            +
            date: 2011-06-24 00:00:00 -04:00
         
     | 
| 
       20 
19 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       21 
20 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       22 
21 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       23 
     | 
    
         
            -
              name: rspec
         
     | 
| 
       24 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       25 
22 
     | 
    
         
             
              requirement: &id001 !ruby/object:Gem::Requirement 
         
     | 
| 
       26 
23 
     | 
    
         
             
                none: false
         
     | 
| 
       27 
24 
     | 
    
         
             
                requirements: 
         
     | 
| 
       28 
25 
     | 
    
         
             
                - - ">="
         
     | 
| 
       29 
26 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       30 
     | 
    
         
            -
                    hash:  
     | 
| 
      
 27 
     | 
    
         
            +
                    hash: 25
         
     | 
| 
       31 
28 
     | 
    
         
             
                    segments: 
         
     | 
| 
       32 
29 
     | 
    
         
             
                    - 1
         
     | 
| 
       33 
30 
     | 
    
         
             
                    - 2
         
     | 
| 
       34 
     | 
    
         
            -
                    -  
     | 
| 
       35 
     | 
    
         
            -
                    version: 1.2. 
     | 
| 
       36 
     | 
    
         
            -
              type: : 
     | 
| 
      
 31 
     | 
    
         
            +
                    - 3
         
     | 
| 
      
 32 
     | 
    
         
            +
                    version: 1.2.3
         
     | 
| 
      
 33 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 34 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 35 
     | 
    
         
            +
              name: resque
         
     | 
| 
       37 
36 
     | 
    
         
             
              version_requirements: *id001
         
     | 
| 
       38 
37 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       39 
     | 
    
         
            -
              name: resque
         
     | 
| 
       40 
     | 
    
         
            -
              prerelease: false
         
     | 
| 
       41 
38 
     | 
    
         
             
              requirement: &id002 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 39 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 40 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 41 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 42 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 43 
     | 
    
         
            +
                    hash: 7
         
     | 
| 
      
 44 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 45 
     | 
    
         
            +
                    - 3
         
     | 
| 
      
 46 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 47 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 48 
     | 
    
         
            +
                    version: 3.0.0
         
     | 
| 
      
 49 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 50 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 51 
     | 
    
         
            +
              name: actionmailer
         
     | 
| 
      
 52 
     | 
    
         
            +
              version_requirements: *id002
         
     | 
| 
      
 53 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 54 
     | 
    
         
            +
              requirement: &id003 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 55 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 56 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 57 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 58 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 59 
     | 
    
         
            +
                    hash: 23
         
     | 
| 
      
 60 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 61 
     | 
    
         
            +
                    - 2
         
     | 
| 
      
 62 
     | 
    
         
            +
                    - 6
         
     | 
| 
      
 63 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 64 
     | 
    
         
            +
                    version: 2.6.0
         
     | 
| 
      
 65 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 66 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 67 
     | 
    
         
            +
              name: rspec
         
     | 
| 
      
 68 
     | 
    
         
            +
              version_requirements: *id003
         
     | 
| 
      
 69 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 70 
     | 
    
         
            +
              requirement: &id004 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 71 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 72 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 73 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 74 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 75 
     | 
    
         
            +
                    hash: 7
         
     | 
| 
      
 76 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 77 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 78 
     | 
    
         
            +
                    - 6
         
     | 
| 
      
 79 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 80 
     | 
    
         
            +
                    version: 0.6.0
         
     | 
| 
      
 81 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 82 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 83 
     | 
    
         
            +
              name: yard
         
     | 
| 
      
 84 
     | 
    
         
            +
              version_requirements: *id004
         
     | 
| 
      
 85 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 86 
     | 
    
         
            +
              requirement: &id005 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 87 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 88 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 89 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 90 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 91 
     | 
    
         
            +
                    hash: 23
         
     | 
| 
      
 92 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 93 
     | 
    
         
            +
                    - 1
         
     | 
| 
      
 94 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 95 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 96 
     | 
    
         
            +
                    version: 1.0.0
         
     | 
| 
      
 97 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 98 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 99 
     | 
    
         
            +
              name: bundler
         
     | 
| 
      
 100 
     | 
    
         
            +
              version_requirements: *id005
         
     | 
| 
      
 101 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 102 
     | 
    
         
            +
              requirement: &id006 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 103 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 104 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 105 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 106 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 107 
     | 
    
         
            +
                    hash: 11
         
     | 
| 
      
 108 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 109 
     | 
    
         
            +
                    - 1
         
     | 
| 
      
 110 
     | 
    
         
            +
                    - 6
         
     | 
| 
      
 111 
     | 
    
         
            +
                    - 2
         
     | 
| 
      
 112 
     | 
    
         
            +
                    version: 1.6.2
         
     | 
| 
      
 113 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 114 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 115 
     | 
    
         
            +
              name: jeweler
         
     | 
| 
      
 116 
     | 
    
         
            +
              version_requirements: *id006
         
     | 
| 
      
 117 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 118 
     | 
    
         
            +
              requirement: &id007 !ruby/object:Gem::Requirement 
         
     | 
| 
      
 119 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 120 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 121 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 122 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 123 
     | 
    
         
            +
                    hash: 23
         
     | 
| 
      
 124 
     | 
    
         
            +
                    segments: 
         
     | 
| 
      
 125 
     | 
    
         
            +
                    - 2
         
     | 
| 
      
 126 
     | 
    
         
            +
                    - 6
         
     | 
| 
      
 127 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 128 
     | 
    
         
            +
                    version: 2.6.0
         
     | 
| 
      
 129 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 130 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 131 
     | 
    
         
            +
              name: rspec
         
     | 
| 
      
 132 
     | 
    
         
            +
              version_requirements: *id007
         
     | 
| 
      
 133 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 134 
     | 
    
         
            +
              requirement: &id008 !ruby/object:Gem::Requirement 
         
     | 
| 
       42 
135 
     | 
    
         
             
                none: false
         
     | 
| 
       43 
136 
     | 
    
         
             
                requirements: 
         
     | 
| 
       44 
137 
     | 
    
         
             
                - - ">="
         
     | 
| 
         @@ -50,23 +143,25 @@ dependencies: 
     | 
|
| 
       50 
143 
     | 
    
         
             
                    - 3
         
     | 
| 
       51 
144 
     | 
    
         
             
                    version: 1.2.3
         
     | 
| 
       52 
145 
     | 
    
         
             
              type: :development
         
     | 
| 
       53 
     | 
    
         
            -
              version_requirements: *id002
         
     | 
| 
       54 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       55 
     | 
    
         
            -
              name: actionmailer
         
     | 
| 
       56 
146 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       57 
     | 
    
         
            -
               
     | 
| 
      
 147 
     | 
    
         
            +
              name: resque
         
     | 
| 
      
 148 
     | 
    
         
            +
              version_requirements: *id008
         
     | 
| 
      
 149 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 150 
     | 
    
         
            +
              requirement: &id009 !ruby/object:Gem::Requirement 
         
     | 
| 
       58 
151 
     | 
    
         
             
                none: false
         
     | 
| 
       59 
152 
     | 
    
         
             
                requirements: 
         
     | 
| 
       60 
153 
     | 
    
         
             
                - - ">="
         
     | 
| 
       61 
154 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       62 
     | 
    
         
            -
                    hash:  
     | 
| 
      
 155 
     | 
    
         
            +
                    hash: 7
         
     | 
| 
       63 
156 
     | 
    
         
             
                    segments: 
         
     | 
| 
       64 
     | 
    
         
            -
                    - 2
         
     | 
| 
       65 
157 
     | 
    
         
             
                    - 3
         
     | 
| 
       66 
     | 
    
         
            -
                    -  
     | 
| 
       67 
     | 
    
         
            -
                     
     | 
| 
      
 158 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 159 
     | 
    
         
            +
                    - 0
         
     | 
| 
      
 160 
     | 
    
         
            +
                    version: 3.0.0
         
     | 
| 
       68 
161 
     | 
    
         
             
              type: :development
         
     | 
| 
       69 
     | 
    
         
            -
               
     | 
| 
      
 162 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 163 
     | 
    
         
            +
              name: actionmailer
         
     | 
| 
      
 164 
     | 
    
         
            +
              version_requirements: *id009
         
     | 
| 
       70 
165 
     | 
    
         
             
            description: Rails plugin for sending asynchronous email with ActionMailer and Resque
         
     | 
| 
       71 
166 
     | 
    
         
             
            email: nap@zerosum.org
         
     | 
| 
       72 
167 
     | 
    
         
             
            executables: []
         
     | 
| 
         @@ -75,21 +170,20 @@ extensions: [] 
     | 
|
| 
       75 
170 
     | 
    
         | 
| 
       76 
171 
     | 
    
         
             
            extra_rdoc_files: 
         
     | 
| 
       77 
172 
     | 
    
         
             
            - LICENSE
         
     | 
| 
       78 
     | 
    
         
            -
            - README. 
     | 
| 
      
 173 
     | 
    
         
            +
            - README.md
         
     | 
| 
       79 
174 
     | 
    
         
             
            files: 
         
     | 
| 
       80 
175 
     | 
    
         
             
            - .document
         
     | 
| 
      
 176 
     | 
    
         
            +
            - CHANGELOG.md
         
     | 
| 
      
 177 
     | 
    
         
            +
            - Gemfile
         
     | 
| 
      
 178 
     | 
    
         
            +
            - Gemfile.lock
         
     | 
| 
       81 
179 
     | 
    
         
             
            - LICENSE
         
     | 
| 
       82 
     | 
    
         
            -
            - README. 
     | 
| 
      
 180 
     | 
    
         
            +
            - README.md
         
     | 
| 
       83 
181 
     | 
    
         
             
            - Rakefile
         
     | 
| 
       84 
182 
     | 
    
         
             
            - VERSION
         
     | 
| 
       85 
183 
     | 
    
         
             
            - lib/resque_mailer.rb
         
     | 
| 
       86 
     | 
    
         
            -
            - lib/resque_mailer/common.rb
         
     | 
| 
       87 
     | 
    
         
            -
            - lib/resque_mailer/rails2.rb
         
     | 
| 
       88 
     | 
    
         
            -
            - lib/resque_mailer/rails3.rb
         
     | 
| 
       89 
184 
     | 
    
         
             
            - rails/init.rb
         
     | 
| 
       90 
     | 
    
         
            -
            -  
     | 
| 
       91 
     | 
    
         
            -
            - spec/ 
     | 
| 
       92 
     | 
    
         
            -
            - spec/rails3_spec.rb
         
     | 
| 
      
 185 
     | 
    
         
            +
            - resque_mailer.gemspec
         
     | 
| 
      
 186 
     | 
    
         
            +
            - spec/resque_mailer_spec.rb
         
     | 
| 
       93 
187 
     | 
    
         
             
            - spec/spec.opts
         
     | 
| 
       94 
188 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
       95 
189 
     | 
    
         
             
            has_rdoc: true
         
     | 
| 
         @@ -126,8 +220,5 @@ rubygems_version: 1.3.7 
     | 
|
| 
       126 
220 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       127 
221 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       128 
222 
     | 
    
         
             
            summary: Rails plugin for sending asynchronous email with ActionMailer and Resque
         
     | 
| 
       129 
     | 
    
         
            -
            test_files: 
         
     | 
| 
       130 
     | 
    
         
            -
             
     | 
| 
       131 
     | 
    
         
            -
            - spec/rails2_spec.rb
         
     | 
| 
       132 
     | 
    
         
            -
            - spec/rails3_spec.rb
         
     | 
| 
       133 
     | 
    
         
            -
            - spec/spec_helper.rb
         
     | 
| 
      
 223 
     | 
    
         
            +
            test_files: []
         
     | 
| 
      
 224 
     | 
    
         
            +
             
     | 
    
        data/README.rdoc
    DELETED
    
    | 
         @@ -1,78 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            = ResqueMailer
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            A gem plugin which allows messages prepared by ActionMailer to be delivered
         
     | 
| 
       4 
     | 
    
         
            -
            asynchronously. Assumes you're using Resque (http://github.com/defunkt/resque)
         
     | 
| 
       5 
     | 
    
         
            -
            for your background jobs.
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
            Works in both Rails 2.x and Rails 3.x.
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
            == Usage
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
            Include Resque::Mailer in your ActionMailer subclass(es) like this:
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             class MyMailer < ActionMailer::Base
         
     | 
| 
       14 
     | 
    
         
            -
               include Resque::Mailer
         
     | 
| 
       15 
     | 
    
         
            -
             end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
            Now, when <tt>MyMailer.deliver_subject_email</tt> is called, an entry will be
         
     | 
| 
       18 
     | 
    
         
            -
            created in the job queue. Your Resque workers will be able to deliver this
         
     | 
| 
       19 
     | 
    
         
            -
            message for you. The queue we're using is imaginatively named +mailer+, so
         
     | 
| 
       20 
     | 
    
         
            -
            just make sure your workers know about it and are loading your environment:
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             QUEUE=mailer rake environment resque:work
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
            Note that you can still have mail delivered synchronously by using the bang
         
     | 
| 
       25 
     | 
    
         
            -
            method variant:
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             MyMailer.deliver_subject_email!
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
            Oh, by the way. Don't forget that your async mailer jobs will be processed by
         
     | 
| 
       30 
     | 
    
         
            -
            a separate worker. This means that you should resist the temptation to pass
         
     | 
| 
       31 
     | 
    
         
            -
            database-backed objects as parameters in your mailer and instead pass record
         
     | 
| 
       32 
     | 
    
         
            -
            identifiers. Then, in your delivery method, you can look up the record from
         
     | 
| 
       33 
     | 
    
         
            -
            the id and use it as needed.
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
            == Rails 3 Support
         
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
            Rails 3 has made some changes to the ActionMailer interface. Instead of
         
     | 
| 
       38 
     | 
    
         
            -
            calling <tt>MyMailer.deliver_subject_email(params)</tt>, you'll want to call
         
     | 
| 
       39 
     | 
    
         
            -
            <tt>MyMailer.subject_email(params).deliver</tt>.
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
            You still need to include <tt>Resque::Mailer</tt> in your mailer as described
         
     | 
| 
       42 
     | 
    
         
            -
            above. Everything else should work as expected.
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
            == Installation
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
            Install it as a plugin or as a gem plugin from Gemcutter:
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
             gem install resque_mailer
         
     | 
| 
       49 
     | 
    
         
            -
             script/plugin install git://github.com/zapnap/resque_mailer.git
         
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
             # Rails 2: edit config/environment.rb
         
     | 
| 
       52 
     | 
    
         
            -
             config.gem 'resque_mailer'
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
             # Rails 3: add it to your Gemfile
         
     | 
| 
       55 
     | 
    
         
            -
             gem 'resque_mailer'
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
            == Testing
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
            You don't want to be sending actual emails in the test environment, so you can
         
     | 
| 
       60 
     | 
    
         
            -
            configure the environments that should be excluded like so:
         
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
       62 
     | 
    
         
            -
             # config/initializers/resque_mailer.rb
         
     | 
| 
       63 
     | 
    
         
            -
             Resque::Mailer.excluded_environments = [:test, :cucumber]
         
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
            == Note on Patches / Pull Requests
         
     | 
| 
       66 
     | 
    
         
            -
             
         
     | 
| 
       67 
     | 
    
         
            -
            * Fork the project.
         
     | 
| 
       68 
     | 
    
         
            -
            * Make your feature addition or bug fix.
         
     | 
| 
       69 
     | 
    
         
            -
            * Add tests for it. This is important so I don't break it in a future version unintentionally.
         
     | 
| 
       70 
     | 
    
         
            -
            * Commit, do not mess with rakefile, version, or history.
         
     | 
| 
       71 
     | 
    
         
            -
              (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
         
     | 
| 
       72 
     | 
    
         
            -
            * Send me a pull request. Bonus points for topic branches.
         
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
            == Credits
         
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
            This work is essentially a forked version of delayed_job_mailer
         
     | 
| 
       77 
     | 
    
         
            -
            (http://github.com/andersondias/delayed_job_mailer) by Anderson Dias. Enhanced
         
     | 
| 
       78 
     | 
    
         
            -
            and modified to work with Resque by Nick Plante.
         
     | 
    
        data/lib/resque_mailer/common.rb
    DELETED
    
    | 
         @@ -1,34 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module Resque
         
     | 
| 
       2 
     | 
    
         
            -
              module Mailer
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
                class << self
         
     | 
| 
       5 
     | 
    
         
            -
                  attr_accessor :default_queue_name
         
     | 
| 
       6 
     | 
    
         
            -
                  attr_reader :excluded_environments
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
                  def excluded_environments=(envs)
         
     | 
| 
       9 
     | 
    
         
            -
                    @excluded_environments = [*envs].map { |e| e.to_sym }
         
     | 
| 
       10 
     | 
    
         
            -
                  end
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                  def included(base)
         
     | 
| 
       13 
     | 
    
         
            -
                    base.extend(ClassMethods)
         
     | 
| 
       14 
     | 
    
         
            -
                  end
         
     | 
| 
       15 
     | 
    
         
            -
                end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                self.default_queue_name = "mailer"
         
     | 
| 
       18 
     | 
    
         
            -
                self.excluded_environments = [:test]
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
                module ClassMethods
         
     | 
| 
       21 
     | 
    
         
            -
                  def environment_excluded?
         
     | 
| 
       22 
     | 
    
         
            -
                    !ActionMailer::Base.perform_deliveries || excluded_environment?(current_env)
         
     | 
| 
       23 
     | 
    
         
            -
                  end
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                  def queue
         
     | 
| 
       26 
     | 
    
         
            -
                    ::Resque::Mailer.default_queue_name
         
     | 
| 
       27 
     | 
    
         
            -
                  end
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                  def excluded_environment?(name)
         
     | 
| 
       30 
     | 
    
         
            -
                    ::Resque::Mailer.excluded_environments && ::Resque::Mailer.excluded_environments.include?(name.to_sym)
         
     | 
| 
       31 
     | 
    
         
            -
                  end
         
     | 
| 
       32 
     | 
    
         
            -
                end
         
     | 
| 
       33 
     | 
    
         
            -
              end
         
     | 
| 
       34 
     | 
    
         
            -
            end
         
     | 
    
        data/lib/resque_mailer/rails2.rb
    DELETED
    
    | 
         @@ -1,25 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module Resque
         
     | 
| 
       2 
     | 
    
         
            -
              module Mailer
         
     | 
| 
       3 
     | 
    
         
            -
                module ClassMethods
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
                  def current_env
         
     | 
| 
       6 
     | 
    
         
            -
                    RAILS_ENV
         
     | 
| 
       7 
     | 
    
         
            -
                  end
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
                  def method_missing(method_name, *args)
         
     | 
| 
       10 
     | 
    
         
            -
                    return super if environment_excluded?
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                    case method_name.id2name
         
     | 
| 
       13 
     | 
    
         
            -
                    when /^deliver_([_a-z]\w*)\!/ then super(method_name, *args)
         
     | 
| 
       14 
     | 
    
         
            -
                    when /^deliver_([_a-z]\w*)/ then ::Resque.enqueue(self, "#{method_name}!", *args)
         
     | 
| 
       15 
     | 
    
         
            -
                    else super(method_name, *args)
         
     | 
| 
       16 
     | 
    
         
            -
                    end
         
     | 
| 
       17 
     | 
    
         
            -
                  end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                  def perform(cmd, *args)
         
     | 
| 
       20 
     | 
    
         
            -
                    send(cmd, *args)
         
     | 
| 
       21 
     | 
    
         
            -
                  end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
                end
         
     | 
| 
       24 
     | 
    
         
            -
              end
         
     | 
| 
       25 
     | 
    
         
            -
            end
         
     | 
    
        data/lib/resque_mailer/rails3.rb
    DELETED
    
    | 
         @@ -1,42 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module Resque
         
     | 
| 
       2 
     | 
    
         
            -
              module Mailer
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
                class Rails3MailerProxy
         
     | 
| 
       5 
     | 
    
         
            -
                  def initialize(mailer_class, action, *args)
         
     | 
| 
       6 
     | 
    
         
            -
                    @mailer_class = mailer_class
         
     | 
| 
       7 
     | 
    
         
            -
                    @action = action
         
     | 
| 
       8 
     | 
    
         
            -
                    @args = args
         
     | 
| 
       9 
     | 
    
         
            -
                  end
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
                  def deliver
         
     | 
| 
       12 
     | 
    
         
            -
                    ::Resque.enqueue(@mailer_class, @action, *@args)
         
     | 
| 
       13 
     | 
    
         
            -
                  end
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                  def deliver!
         
     | 
| 
       16 
     | 
    
         
            -
                    @mailer_class.send(:new, @action, *@args).message.deliver
         
     | 
| 
       17 
     | 
    
         
            -
                  end
         
     | 
| 
       18 
     | 
    
         
            -
                end
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
                module ClassMethods
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                  def current_env
         
     | 
| 
       23 
     | 
    
         
            -
                    ::Rails.env
         
     | 
| 
       24 
     | 
    
         
            -
                  end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                  def method_missing(method_name, *args)
         
     | 
| 
       27 
     | 
    
         
            -
                    return super if environment_excluded?
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                    if action_methods.include?(method_name.to_s)
         
     | 
| 
       30 
     | 
    
         
            -
                      Rails3MailerProxy.new(self, method_name, *args)
         
     | 
| 
       31 
     | 
    
         
            -
                    else
         
     | 
| 
       32 
     | 
    
         
            -
                      super
         
     | 
| 
       33 
     | 
    
         
            -
                    end
         
     | 
| 
       34 
     | 
    
         
            -
                  end
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
                  def perform(action, *args)
         
     | 
| 
       37 
     | 
    
         
            -
                    Rails3MailerProxy.new(self, action, *args).deliver!
         
     | 
| 
       38 
     | 
    
         
            -
                  end
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
                end
         
     | 
| 
       41 
     | 
    
         
            -
              end
         
     | 
| 
       42 
     | 
    
         
            -
            end
         
     | 
    
        data/spec/common_spec.rb
    DELETED
    
    | 
         @@ -1,26 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require File.join(File.expand_path(File.dirname(__FILE__)), 'spec_helper')
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            class CommonMailer
         
     | 
| 
       4 
     | 
    
         
            -
              include Resque::Mailer
         
     | 
| 
       5 
     | 
    
         
            -
            end
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
            describe Resque::Mailer do
         
     | 
| 
       8 
     | 
    
         
            -
              describe ".queue" do
         
     | 
| 
       9 
     | 
    
         
            -
                context "when not changed" do
         
     | 
| 
       10 
     | 
    
         
            -
                  it "should return 'mailer'" do
         
     | 
| 
       11 
     | 
    
         
            -
                    CommonMailer.queue.should == "mailer"
         
     | 
| 
       12 
     | 
    
         
            -
                  end
         
     | 
| 
       13 
     | 
    
         
            -
                end
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                context "when changed" do
         
     | 
| 
       16 
     | 
    
         
            -
                  before do
         
     | 
| 
       17 
     | 
    
         
            -
                    @my_default_queue = "foobar"
         
     | 
| 
       18 
     | 
    
         
            -
                    Resque::Mailer.should_receive(:default_queue_name).and_return(@my_default_queue)
         
     | 
| 
       19 
     | 
    
         
            -
                  end
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                  it "should return proper queue name" do
         
     | 
| 
       22 
     | 
    
         
            -
                    CommonMailer.queue.should == @my_default_queue
         
     | 
| 
       23 
     | 
    
         
            -
                  end
         
     | 
| 
       24 
     | 
    
         
            -
                end
         
     | 
| 
       25 
     | 
    
         
            -
              end
         
     | 
| 
       26 
     | 
    
         
            -
            end
         
     | 
    
        data/spec/rails2_spec.rb
    DELETED
    
    | 
         @@ -1,71 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require File.join(File.expand_path(File.dirname(__FILE__)), 'spec_helper')
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            gem     'actionmailer', '~>2.3.4'
         
     | 
| 
       4 
     | 
    
         
            -
            require 'action_mailer'
         
     | 
| 
       5 
     | 
    
         
            -
            require 'resque_mailer/rails2'
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
            ActionMailer::Base.delivery_method = :test
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
            class Rails2Mailer < ActionMailer::Base
         
     | 
| 
       10 
     | 
    
         
            -
              include Resque::Mailer
         
     | 
| 
       11 
     | 
    
         
            -
              MAIL_PARAMS = { :to => "misio@example.org" }
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
              def test_mail(opts={})
         
     | 
| 
       14 
     | 
    
         
            -
                @subject    = 'subject'
         
     | 
| 
       15 
     | 
    
         
            -
                @body       = 'mail body'
         
     | 
| 
       16 
     | 
    
         
            -
                @recipients = opts[:to]
         
     | 
| 
       17 
     | 
    
         
            -
                @from       = 'from@example.org'
         
     | 
| 
       18 
     | 
    
         
            -
                @sent_on    = Time.now
         
     | 
| 
       19 
     | 
    
         
            -
                @headers    = {}
         
     | 
| 
       20 
     | 
    
         
            -
              end
         
     | 
| 
       21 
     | 
    
         
            -
            end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
            describe Rails2Mailer do
         
     | 
| 
       24 
     | 
    
         
            -
              before do
         
     | 
| 
       25 
     | 
    
         
            -
                Rails2Mailer.stub(:current_env => :test)
         
     | 
| 
       26 
     | 
    
         
            -
              end
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
              describe '#deliver' do
         
     | 
| 
       29 
     | 
    
         
            -
                before(:all) do
         
     | 
| 
       30 
     | 
    
         
            -
                  @delivery = lambda {
         
     | 
| 
       31 
     | 
    
         
            -
                    Rails2Mailer.deliver_test_mail(Rails2Mailer::MAIL_PARAMS)
         
     | 
| 
       32 
     | 
    
         
            -
                  }
         
     | 
| 
       33 
     | 
    
         
            -
                end
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
                before(:each) do
         
     | 
| 
       36 
     | 
    
         
            -
                  Resque.stub(:enqueue)
         
     | 
| 
       37 
     | 
    
         
            -
                end
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
                it 'should not deliver the email synchronously' do
         
     | 
| 
       40 
     | 
    
         
            -
                  lambda { @delivery.call }.should_not change(ActionMailer::Base.deliveries, :size)
         
     | 
| 
       41 
     | 
    
         
            -
                end
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
                it 'should place the deliver action on the Resque "mailer" queue' do
         
     | 
| 
       44 
     | 
    
         
            -
                  Resque.should_receive(:enqueue).with(Rails2Mailer, "deliver_test_mail!", Rails2Mailer::MAIL_PARAMS)
         
     | 
| 
       45 
     | 
    
         
            -
                  @delivery.call
         
     | 
| 
       46 
     | 
    
         
            -
                end
         
     | 
| 
       47 
     | 
    
         
            -
             
     | 
| 
       48 
     | 
    
         
            -
                context "when current env is excluded" do
         
     | 
| 
       49 
     | 
    
         
            -
                  it 'should not deliver through Resque for excluded environments' do
         
     | 
| 
       50 
     | 
    
         
            -
                    Resque::Mailer.stub(:excluded_environments => [:custom])
         
     | 
| 
       51 
     | 
    
         
            -
                    Rails2Mailer.should_receive(:current_env).and_return(:custom)
         
     | 
| 
       52 
     | 
    
         
            -
                    Resque.should_not_receive(:enqueue)
         
     | 
| 
       53 
     | 
    
         
            -
                    @delivery.call
         
     | 
| 
       54 
     | 
    
         
            -
                  end
         
     | 
| 
       55 
     | 
    
         
            -
                end
         
     | 
| 
       56 
     | 
    
         
            -
              end
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
              describe '#deliver!' do
         
     | 
| 
       59 
     | 
    
         
            -
                it 'should deliver the email synchronously' do
         
     | 
| 
       60 
     | 
    
         
            -
                  lambda { Rails2Mailer.deliver_test_mail!(Rails2Mailer::MAIL_PARAMS) }.should change(ActionMailer::Base.deliveries, :size).by(1)
         
     | 
| 
       61 
     | 
    
         
            -
                end
         
     | 
| 
       62 
     | 
    
         
            -
              end
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
              describe ".perform" do
         
     | 
| 
       65 
     | 
    
         
            -
                it 'should perform a queued mailer job' do
         
     | 
| 
       66 
     | 
    
         
            -
                  lambda {
         
     | 
| 
       67 
     | 
    
         
            -
                    Rails2Mailer.perform("deliver_test_mail!", Rails2Mailer::MAIL_PARAMS)
         
     | 
| 
       68 
     | 
    
         
            -
                  }.should change(ActionMailer::Base.deliveries, :size).by(1)
         
     | 
| 
       69 
     | 
    
         
            -
                end
         
     | 
| 
       70 
     | 
    
         
            -
              end
         
     | 
| 
       71 
     | 
    
         
            -
            end
         
     |