It is difficult to generate URLs with ActionMailer. Although you can generate absolute paths from your routes, you usually need to generate full URLs for the links in the email to be useful to your recipients.
This plugin sets the default_url_options for host, port and protocol by providing an around_filter which will grab the values from the request object. In the cases when the request object is not available, for example, when running tests, default values are set instead.
This is basically a repackaging of retardase_inhibitor (github.com/luke0x/retardase_inhibitor), with more descriptive name and a gemspec that will actually build on github (yay for jeweler!).
# setup gemcutter, if you haven't already: gem install gemcutter gem tumble gem install actioncontroller_host_autoset
Or, in environment.rb:
config.gem 'actionmailer_host_autoset', :source => 'http://gems.gemcutter.org'
Add the around_filter to the ApplicationController to set the default_url_options for every request.
class ApplicationController < ActionController::Base around_filter :actionmailer_host_autoset end
I prefer to add it just around the actions when I know an Observer will kick off an ActionMailer notifier. For example, I have an the filter kick off in my SessionsController#create when I process a user signup.
class SessionsController < ActionController::Base around_filter :actionmailer_host_autoset, :only => :create def create ... end end
Copyright © 2007 Nick Kallen, 2009 Tobias Crawley. See LICENSE for details.