Tìm hiểu về gem Letter Opener
Bài đăng này đã không được cập nhật trong 8 năm
Trong quá trình xây dựng 1 ứng dụng, bạn cần làm chức năng gửi mail nhưng không muốn thiết lập mail thử nghiệm hoặc không muốn 1 mail spam sẽ được gửi từ mail thử nghiệm của bạn đến 1 mail nào đó. Gem "Letter Opener" sẽ giúp bạn giải quyết vấn đề đó một cách đơn giản. Thay vì phải mở mail để test, Letter Opener sẽ giúp bạn reivew email ngay trên trình duyệt.
Đề sử dụng được gem "Letter Opener" đầu tiên bạn cần thêm nó vào môi trường phát triển của bạn sau đó mở command lên và chạy lệnh "bundle" để cài đặt nó
gem "letter_opener", :group => :development
Sau đó bạn cần thiết lập phương thức delivery method trong file config/environments/development.rb
như sau:
config.action_mailer.delivery_method = :letter_opener
Bây giờ bất kỳ email sẽ bật lên trong trình duyệt của bạn thay vì được gửi đi. Các tin nhắn được lưu trữ trong tmp / letter_opener. Nếu bạn muốn thay đổi ứng dụng đó sẽ được sử dụng để mở email của bạn, bạn nên ghi đè biến môi trường LAUNCHY_APPLICATION hoặc thiết lập Launchy.application trong initializer.
Non Rails Setup
Nếu bạn không sử dụng Rails, điều này có thể dễ dàng thiết lập bằng cách sử dụng Mail gem. Chỉ cần thiết lập các phương pháp phân phối khi cấu hình Mail và chỉ định một vị trí.
require "letter_opener"
Mail.defaults do
delivery_method LetterOpener::DeliveryMethod, :location => File.expand_path('../tmp/letter_opener', __FILE__)
end
Phương pháp này là tương tự nếu bạn đang sử dụng Pony gem:
require "letter_opener"
Pony.options = {
:via => LetterOpener::DeliveryMethod,
:via_options => {:location => File.expand_path('../tmp/letter_opener', __FILE__)}
}
Ngoài ra, nếu bạn đang sử dụng ActionMailer trực tiếp (không có Rails), bạn sẽ cần thêm các phương pháp phân phối.
require "letter_opener"
ActionMailer::Base.add_delivery_method :letter_opener, LetterOpener::DeliveryMethod, :location => File.expand_path('../tmp/letter_opener', __FILE__)
ActionMailer::Base.delivery_method = :letter_opener
Letter Opener sử dụng Launchy để mở gửi mail trong trình duyệt. Điều này giả định quá trình Ruby được chạy trên các máy phát triển địa phương. Nếu bạn đang sử dụng một dàn máy chủ riêng biệt hoặc máy ảo này sẽ không làm việc. Trong trường hợp đó xem xét sử dụng Mailtrap hoặc MailCatcher. Link tham khảo: https://github.com/ryanb/letter_opener
All rights reserved