2011-09-19 33 views
17

Tôi đang sử dụng thiết lập và tôi muốn có thể bỏ qua email xác nhận trong khi đang ở chế độ phát triển. Vì ứng dụng của tôi không thể gửi e-mail trong khi chạy trên máy cục bộ của tôi, tôi sẽ chỉ nhận được thông báo cảnh báo rằng bạn cần được xác nhận trước khi truy cập vào ứng dụng.bỏ qua email xác nhận đang được phát triển với sự phát triển

Trả lời

23

thử Letter Opener đá quý từ Ryan Bates

https://github.com/ryanb/letter_opener

nó sẽ mở email trong trình duyệt mà không gửi đi. Bạn không muốn bỏ qua nội dung nếu bạn đang phát triển vì nội dung sẽ bị bỏ qua/quên mất.

+0

hoặc [letter_opener_web] (https://github.com/fgrehm/letter_opener_web) để dàn dựng –

+0

Không chắc chắn về người hỏi ở đây, nhưng cá nhân tôi đang điền một ứng dụng lớn với nhiều dữ liệu. Tôi chỉ có 600 tab được mở trong trình duyệt của mình vì tôi sử dụng công cụ mở thư. Tôi đồng ý rằng trong hầu hết các trường hợp, bạn sẽ không muốn bỏ qua, trong trường hợp này tôi def. cần phải bỏ qua. – Sean

1

Devise sử dụng ActionMailer để gửi email. Trong chế độ thử nghiệm, ActionMailer không thực sự gửi bất kỳ email nào.

Khám phá this tutorial để được giải thích về môi trường ActionMailer và thử nghiệm.

Vì vậy, tùy thuộc vào môi trường, về cơ bản bạn có thể tắt phân phối, trong khi không ảnh hưởng đến các thử nghiệm thực tế của bạn. Bạn chỉ cần chỉ định tùy chọn đó trong tệp environments/test.rb.

+0

Tôi thấy rằng trong tệp thử nghiệm, mã này có mã sau: # Cho Action Mailer không gửi email đến thế giới thực. #: Phương pháp phân phối thử nghiệm tích luỹ email đã gửi trong mảng # ActionMailer :: Base.deliveries. config.action_mailer.delivery_method =: test Tôi có nên chỉ sao chép đoạn mã đó vào tập tin config/environment/development.rb – tomciopp

+0

Hmm ngay cả khi tôi tắt chuyển phát mặc dù tôi vẫn không cần cách đáp ứng mô-đun được xác nhận , vì tôi vẫn nhận được lỗi tương tự mà tôi cần phải được xác nhận. – tomciopp

+0

Nếu bạn muốn nói, một cách để thỏa mãn nó với các thử nghiệm có liên quan, tôi sẽ giả mạo xác nhận với một đối tượng giả hoặc bằng cách cho nó mã xác nhận từ DB, vì việc gửi một email thực sự không phải là ' t những gì quan trọng trong thử nghiệm. Điều quan trọng là cơ chế xác nhận hoạt động, đúng không? Tức là, khi mã xác nhận thích hợp được trình bày qua URL xác nhận, bạn muốn biết rằng một số cờ 'xác nhận' được lật trong DB? – jefflunt

2

Trong Rails 3, bạn có thể sử dụng "trình chặn" để định tuyến lại email phát triển của mình như được mô tả trong Railscast 206.

26

Devise cũng có phương thức skip_confirmation! mà bạn có thể gọi trên mô hình trước khi lưu để tránh gửi thư. Nó chỉ đơn giản là đặt thuộc tính confirmed_at dẫn đến bỏ qua việc gửi thư.

5

Hoặc bạn có thể thử MailCatcher trong môi trường phát triển của mình.

1

Lấy mẫu của bạn để tạo ra. Thông thường là user.rb. Và xóa hoặc nhận xét cấu hình comfirmable. này sẽ ngăn chặn quá trình xác nhận

13

Đơn giản như vậy

user=User.new 
user.email="[email protected]" 
user.password="yourPassword" 
user.skip_confirmation! 
user.save 
+2

Cũng giống như một chút FYI, bạn có thể đặt tất cả điều đó trong một khối: 'user = User.new {| u | u.email = '[email protected]'; u.password = 'yourPassword'; u.skip_confirmation! } .save'. Khối vui vẻ! – wulftone

3

Nếu bạn muốn có một trọng lượng cách thực sự ánh sáng để làm điều này, hãy nhìn vào thiết bị đầu cuối của bạn sau khi đăng ký - ray đầu ra cho thấy các email mà có đã gửi, bạn có thể sao chép-dán liên kết xác nhận, xác nhận tài khoản và sau đó tiếp tục thử nghiệm.

thô, nhưng hiệu quả.

Các vấn đề liên quan