11
votes

Rails 4 Aperçu des e-mails dans la production

J'utilise les rails 4.1.1 et ActionMailer :: Aperçu pour prévisualiser les courriels. Dans l'environnement de développement, tout fonctionne excellent.

Mais dans l'environnement de production, les itinéraires de prévisualisation ne sont pas accessibles. Je stocke les aperçus dans Test / Mailers / Aperçu /

est possible de leur permettre de production?


0 commentaires

5 Réponses :


2
votes

des rails 4.2 Vous pouvez utiliser le drapeau de production.rb (ou autre environnement personnalisé): xxx pré>

Je n'ai rien trouvé similaire dans des rails 4.1. P>

Mise à jour forte>:
Si la RSPEC utilisait, par exemple, il sera nécessaire d'ajouter le chemin de trajectoire: p>

config.action_mailer.preview_path = "#{Rails.root}/spec/mailers/previews"


3 commentaires

L'application répond avec "à des fins de sécurité, ces informations sont uniquement disponibles pour les demandes locales". Si nous essayons de l'exécuter sur le serveur


Vous devez également ajouter config.Consider_all_requests_local = true


Je suis sur Rails 5 et ce cadre a fonctionné pour moi. Les aperçus de courrier sont toutefois disponibles dans le monde entier. Nous devrons proposer quelque chose pour bloquer les utilisateurs non administratifs. Notez qu'il est une très mauvaise idée de définir config.Consider_all_requests_local = true dans un environnement de production - les utilisateurs de la pile interne et les messages d'erreur de la pile interne plutôt que de votre 404 ou 500 pages.



16
votes

En plus de cela:

config.action_mailer.preview_path ||= defined?(Rails.root) ? "#{Rails.root}/test/mailers/previews" : nil
config.autoload_paths += [config.action_mailer.preview_path]


2 commentaires

J'ai dû changer config.cache_classes = false afin de le faire fonctionner dans la 4.2.2, non testée dans une autre version.


Un mot d'avertissement que vous ne devriez absolument pas définir config.Consider_all_requests_local car cela videra les messages d'erreur au navigateur, identique à celui que vous constatez pendant le mode de développement. Vous ne voulez certainement pas faire cela dans un environnement de production qui a des utilisateurs réguliers dans le monde. Voir le "pour le faire sans ouvrir un gros trou de sécurité" répondre dans ce fil!



13
votes

Pour le faire sans ouvrir un gros trou de sécurité:

production.rb xxx


1 commentaires

Je reçois l'ajout du avant_filter et remplacer le local_request? méthode pour le :: rails :: mailerscontroller classe. Mais les modifications de la section MyApp :: Application.Configure semblent inutiles. On dirait que la manière sécurisée serait de définir config.action_mailer.show_previews = true , puis utilisez la partie inférieure de ce que vous avez suggéré. Pouvez-vous m'aider à comprendre sur les chemins et les itinéraires?



3
votes

Il est possible d'activer les aperçus dans la production par config.action_mailer.show_previews = true comme indique la meilleure réponse.

Je veux juste ajouter comment vous pouvez rendre les aperçus sur Iframe dans votre propre zone d'administration, par exemple. Dans ACTIVE Admin (Rails 5.1)

Et aussi je trouve qu'il est pas si difficile à écrire votre propre aperçus e-mail administration , et n'utilisez pas du tout des aperçus standard. Vous pouvez ensuite ajouter vos propres fonctionnalités telles que modifier les paramètres de prévisualisation ou envoyer pour voir cet e-mail sur votre téléphone.


0 commentaires

1
votes

Voici ce que j'ai fait pour les rails 5.2:

production.rb xxx

en supposant que votre ApplicationController :: Autorisation Le code de requiert_admin . J'ai préféré cette approche plutôt que de réécrire mon code d'autorisation. Rappelez-vous d'inclure le :: à l'avant était difficile, car dire Inclure ApplicationController :: ... va regarder dans les Rails :: MailersController Espace de noms .


0 commentaires