Goatmail

Gem Version Build Status Coverage Status Code Climate Dependency Status

A Sinatra-based frontend to the letter_opener.
This provides almost the same feature as the letter_opener_web.
letter_opener_web is Rails based application. It's very useful. But, I wanted a more simple application.

Try it out in https://goatmail.herokuapp.com/.

Installation

First add the gem to your development environment and run the bundle command to install it.

gem 'goatmail', :group => :development

Rails Setup

Then set the delivery method in config/environments/development.rb

  # If you will specify a message file location.
  # Goatmail.location = Rails.root.join('tmp/goatmail')
  config.action_mailer.delivery_method = :goatmail

And mount app, add to your routes.rb

Sample::Application.routes.draw do
  if Rails.env.development?
    mount Goatmail::App, at: "/inbox"
  end
end

If you use the Rails 5, Please use a combination with the Sinatra 2.0 later version.

Padrino Setup

Then set the delivery method and mount app in config/apps.rb

Padrino.configure_apps do
  if Padrino.env == :development
    # If you will specify a message file location.
    # Goatmail.location = Padrino.root('tmp/goatmail')
    set :delivery_method, Goatmail::DeliveryMethod => {}
  end
end

if Padrino.env == :development
  Padrino.mount('Goatmail::App').to('/inbox')
end
Padrino.mount('SampleProject::App', :app_file => Padrino.root('app/app.rb')).to('/')

If an exception occurs that "Gem Load Error is: undefined method 'version' for Padrino:Module", please try this:

# Gemfile
gem 'goatmail', :group => :development, :require => false

# config/boot.rb
Padrino.before_load do
  require 'goatmail'
end

Sinatra Sample

# app.rb
module Sample
  class App < Sinatra::Base
    configure do
      set :root, File.dirname(__FILE__)
      if ENV['RACK_ENV'] == 'development'
        Goatmail.location = File.join("#{root}/tmp/goatmail")
        Mail.defaults do
          delivery_method Goatmail::DeliveryMethod
        end
      end
    end
  end
end
# config.ru
map '/' do
  run Sample::App.new
end

if ENV['RACK_ENV'] == 'development'
  map '/inbox' do
    run Goatmail::App.new
  end
end

See: Sample Applications

Contributing

  1. Fork it ( https://github.com/tyabe/goatmail/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request