Email preview in production in rails 4

133 views
Skip to first unread message

Hristo Peev

unread,
Dec 11, 2014, 11:17:29 AM12/11/14
to rubyonra...@googlegroups.com

Hello,

I am using rails 4.1.1 and ActionMailer::Preview. In development environment everything is working excellent.

But in production environment the preview routes are not accessible. I store the previews in test/mailers/previews/
Is is possible to enable them for production?

Thanks!

jbar

unread,
Jan 7, 2015, 4:54:51 PM1/7/15
to rubyonra...@googlegroups.com
Did you ever find a solution? I'm looking to do the same thing.

Hristo Peev

unread,
Jan 8, 2015, 3:13:57 AM1/8/15
to rubyonra...@googlegroups.com
Hi, 

I have a clue, but I haven't tested it yet.

Try to add the routes in your routes.rb file manually.

If you have a chance to test this, please, write a line about the results.

Thanks!

Harshvardhan Parihar

unread,
Feb 18, 2015, 11:27:11 AM2/18/15
to rubyonra...@googlegroups.com
Did u get the solution for this issue.

Hristo Peev

unread,
Feb 19, 2015, 12:58:24 AM2/19/15
to rubyonra...@googlegroups.com
Hi, 

I have a clue, but I haven't tested it yet.

Try to add the routes in your routes.rb file manually.

If you have a chance to test this, please, write a line about the results.

Thanks!

Mike

unread,
Mar 8, 2015, 7:36:43 AM3/8/15
to rubyonra...@googlegroups.com
You should not really do this as the whole point of the production environment is to be live and sending mails

The content should not be different to your test or development environment so I am not sure what issue you think you are having

However if you want to do this, then I would suggest something like the mailcatcher gem and temporarily reset your production SMTP settings to use that, however as I said above there should be no need to do this assuming you have tested your app previously

Obviously if you reset your SMTP settings to use mailcatcher then no one will receive any live email from your app

Michael Johnston

unread,
Sep 8, 2016, 5:37:22 PM9/8/16
to Ruby on Rails: Talk
This is how I did it. For those having trouble imagining the use case, it was so the client who pays for the app could easily review the many mails the app sends.


##production.rb

    MyApp::Application.configure do
      config.action_mailer.preview_path ||= defined?(Rails.root) ? "#{Rails.root}/spec/mailer_previews" : nil
      config.autoload_paths += [config.action_mailer.preview_path]

      routes.append do
        get '/rails/mailers'         => "rails/mailers#index"
        get '/rails/mailers/*path'   => "rails/mailers#preview"
      end
    end

    class ::Rails::MailersController
      before_filter :authenticate_admin!
      def local_request?
        true
      end
      private
      def authenticate_admin!
        ...
      end
    end

Michael Johnston

unread,
Sep 8, 2016, 5:37:22 PM9/8/16
to Ruby on Rails: Talk


On Sunday, March 8, 2015 at 4:36:43 AM UTC-7, Mike wrote:
You should not really do this as the whole point of the production environment is to be live and sending mails


It's been a year so perhaps your imagination or experience has expanded, but in case not how about this perfectly legitimate use case: the client who contracted the development of the app would like to be able to view the various mails that the app sends.
Reply all
Reply to author
Forward
0 new messages