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
5条答案
按热度按时间camsedfj1#
除此之外:
您还需要设置
在您的环境中,预览路由是可访问的。这也有其他含义(请参阅https://stackoverflow.com/a/373135/1599045),所以您可能不希望在生产中启用此功能。但是,如果您有一个非
development
的自定义环境,这两者的组合应该可以使事情正常工作。最初的问题是针对rails 4.1.1的,它没有
config.action_mailer.show_previews
可用。要让ActionMailer预览在rails 4.1.1的非开发环境中工作,首先需要向config/routes.rb
添加一些路由(在本例中,我的环境名为custom
):然后,您需要在您的环境的配置文件(在我的例子中,
config/environments/custom.rb
)中自动加载所需的库:这似乎执行与
config.action_mailer.show_previews
相同的任务。与4.2一样,您仍然需要如上所述调整本地请求配置,这取决于您的自定义环境是在本地使用还是在服务器上使用。
rqdpfwrv2#
要做到这一点而不打开一个大的安全漏洞:
生产.rb
mwyxok5s3#
正如最佳答案所说的那样,可以通过
config.action_mailer.show_previews = true
在生产中启用预览。我只是想补充一下如何在自己的管理区域内渲染iframe预览,例如在active admin(Rails 5.1)中。
我还发现write your own email previews administration并不难,而且根本不用rails标准预览,你可以添加自己的功能,比如修改预览参数或者点击发送按钮在手机上查看这封邮件。
h7appiyu4#
从Rails 4.2开始,您可以在生产. rb(或其他自定义环境)中使用该标志:
我还没有在Rails4.1中找到任何类似的东西。
例如,如果使用Rspec,则需要添加路径:
默认路径为"#{Rails. root}/test/mailers/previews"。
而且无需触摸配置。考虑所有请求本地
rwqw0loc5#
下面是我为Rails 5.2所做的工作:
第一个月
假设您的
ApplicationController::Authorization
模块包含require_admin
的代码,我宁愿使用这种方法,也不愿重写我的授权代码,记住在前面包含::
是很棘手的,因为说include ApplicationController::...
将在Rails::MailersController
名称空间中查找。