Rails wrapper for the premailer gem
Switch branches/tags
Nothing to show
Pull request Compare This branch is 3 commits ahead, 264 commits behind fphilipe:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Premailer Rails 3 README

This gem is a no config solution for the wonderful Premailer gem to be used with Rails 3. It uses interceptors which were introduced in Rails 3 and tweaks all mails which are delivered and adds a plain text part to them and inlines all CSS rules into the HTML part.

By default it inlines all the CSS files that are linked to in the HTML:

<link type='text/css' ... />

Don't worry about the host in the CSS URL since this will be ignored.

If no CSS file is linked to in the HTML it will try to load a default CSS file email.css.

Every CSS file (including the default email.css) is loaded from within the app. The retrieval of the file depends on your assets configuration:

  • Rails 3.1 asset pipeline: It will load the compiled version of the CSS asset which is normally located in app/assets/stylesheets/.

  • Classic static assets: It will try to load the CSS file located in public/stylesheets/

  • Hassle: It will try to load the compiled CSS file located in the default Hassle location tmp/hassle/stylesheets/


Simply add the gem to your Gemfile in your Rails project:

gem 'premailer-rails3'

premailer-rails3 requires either nokogiri or hpricot. It doesn't list them as a dependency so you can choose which one to use.

gem 'nokogiri'
# or
gem 'hpricot'

If both are loaded for some reason, premailer chooses hpricot.

That's it!


Premailer itself accepts a number of options. In order for premailer-rails3 to pass these options on to the underlying premailer instance, specify them in an initializer:

PremailerRails.config = {
  :preserve_styles => true,
  :remove_ids      => true

For a list of options, refer to the Premailer documentation

Note that the options with_html_string and css_string are used to make this gem work and will thus be overridden.