19

đôi khi tôi đang phát triển, tôi không có kết nối internet. Điều này dẫn đến một lỗi bất cứ nơi nào ứng dụng của tôi có nghĩa vụ phải gửi một email:Làm thế nào để vô hiệu hóa ActionMailer trong phát triển?

getaddrinfo: nodename nor servname provided, or not known 

Có một cách đơn giản và nhanh chóng nơi tôi có thể thay đổi một giá trị cấu hình để làm cho ActionMailer chỉ không cố gắng để thực sự gửi đi một email và không ném một lỗi? Có lẽ một cái gì đó thats scoped đến môi trường phát triển. Hoặc một số cách khác tôi có thể tránh được lỗi được ném và mã của tôi đi qua bất cứ nơi nào tôi gọi là hành động cung cấp?

Tôi đang sử dụng Rails 3.1

Trả lời

47

Thực tiễn phổ biến là chỉ để Rails bỏ qua lỗi thư. Trong tập tin config/environments/development.rb bạn thêm, bỏ ghi chú hoặc sửa đổi:

# Don't care if the mailer can't send 
config.action_mailer.raise_delivery_errors = false 

Bạn cũng có thể thiết lập này:

config.action_mailer.perform_deliveries = false 

Xem tài liệu ở đây http://edgeguides.rubyonrails.org/action_mailer_basics.html#action-mailer-configuration

Bạn cũng có thể thiết lập các phương pháp phân phối để: kiểm tra, nhưng tôi chưa thực sự thử rằng

config.action_mailer.delivery_method = :test 
+1

hoạt động hoàn hảo! – alik

10

Nếu bạn muốn vô hiệu hóa việc gửi thư sau khi ứng dụng đường ray của bạn đã được khởi tạo (trong khi tạo dữ liệu mẫu, trong khi di chuyển, v.v.):

ActionMailer::Base.perform_deliveries = false