데이터베이스 트랜잭션에서 Rails 메일러 미리보기를 래핑하는 방법
이 과정에서 가장 어려운 부분은 콘텐츠 제작입니다. 특히 다국어 응용 프로그램을 빌드하는 경우 소스 코드에서 큰 그림을 보는 것이 매우 어려울 수 있습니다. 다행히도 Rails는 Action Mailer Previews 을 사용하여 이러한 이메일이 웹 브라우저에서 올바르게 보이는지 확인할 수 있는 방법을 제공합니다.
ActionMailer::Preview
에서 상속하는 클래스를 만들고 필요한 메일러 작업을 호출하기만 하면 됩니다.# test/mailers/previews/user_mailer_preview.rb
class UserMailerPreview < ActionMailer::Preview
def confirmation
user = User.new(email: "[email protected]")
UserMailer.with(user: user).confirmation
end
end
그러나 때때로 메일러는 개체 자체가 아니라 데이터베이스에 있는 레코드의 ID를 기대합니다. 예를 들어 새 이메일 확인 토큰을 생성하기 위해 이 레코드를 준비해야 하는 경우도 있습니다.
# test/mailers/previews/user_mailer_preview.rb
class UserMailerPreview < ActionMailer::Preview
def confirmation
user = User.first
user.prepare_token!(:confirmation)
UserMailer.with(user_id: user.id).confirmation
end
end
그러나 이것은 일시적인 변화일 뿐입니다. 물론 전체 메소드를 데이터베이스 트랜잭션으로 래핑하고 데이터베이스 롤백 명령을 사용할 수 있습니다. 하지만… 정확히 어떻게?
다행히 일부 Rails 원숭이 패치를 사용하여 이를 수행하는 쉬운 방법이 있습니다. 다음 모듈을 생성하면 됩니다.
# lib/core_extensions/mailer_preview_rollback
module CoreExtensions
module MailerPreviewRollback
def preview
ActiveRecord::Base.transaction do
super
raise ActiveRecord::Rollback
end
end
end
end
Ruby on Rails 애플리케이션에서 이니셜라이저를 만들고 이 모듈을 추가합니다.
# config/initializers/mailer_preview_rollback.rb
Rails.configuration.after_initialize do
require "core_extensions/mailer_preview_rollback"
Rails::MailersController.prepend CoreExtensions::MailerPreviewRollback
end
그리고 짜잔! 이제 모든 메일러 미리보기가 데이터베이스 트랜잭션에 안전하게 래핑됩니다.
원문: How to wrap Rails mailer previews in a database transaction
Reference
이 문제에 관하여(데이터베이스 트랜잭션에서 Rails 메일러 미리보기를 래핑하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jkostolansky/how-to-wrap-rails-mailer-previews-in-a-database-transaction-1h69텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)