2011-09-19 2 views
17

Używam programisty i chcę móc pominąć wiadomość e-mail z potwierdzeniem, gdy jestem w trybie programowania. Ponieważ moja aplikacja nie może wysyłać wiadomości e-mail podczas pracy na moim komputerze lokalnym, otrzymam komunikat ostrzegawczy mówiący o konieczności potwierdzenia przed uzyskaniem dostępu do aplikacji.Pomiń e-mail z potwierdzeniem w rozwijaniu z pomocą:

Odpowiedz

23

spróbować otwieracz do listów gem Ryan Bates

https://github.com/ryanb/letter_opener

otworzy wiadomość e-mail w przeglądarce bez konieczności wysyłania go. Nie chcesz pomijać rzeczy, jeśli jesteś w fazie rozwoju, ponieważ rzeczy zostaną zapomniane/zapomniane.

+0

lub [letter_opener_web] (https://github.com/fgrehm/letter_opener_web) dla przemieszczania –

+0

Nie jestem pewien o pytającym, ale osobiście zapełniam dużą aplikację z dużą ilością danych. Właśnie otworzyłem ponad 600 zakładek w przeglądarce, ponieważ używam narzędzia do otwierania listów. Zgadzam się, że w większości przypadków nie chciałbyś pominąć, w tym przypadku ja def. trzeba pominąć. – Sean

1

Devise używa ActionMailer do wysyłania wiadomości e-mail. W trybie testowym ActionMailer nie powinien wysyłać żadnych wiadomości e-mail.

Zapoznaj się z this tutorial, aby uzyskać wyjaśnienie na temat środowisk ActionMailer i testowania.

W zależności od środowiska można zasadniczo wyłączyć dostawę, nie wpływając jednak na rzeczywiste testy. Trzeba tylko określić tę opcję w pliku environments/test.rb.

+0

Widzę, że w pliku testowym ma następujący kod: # Tell Action Mailer, aby nie dostarczać wiadomości e-mail do świata rzeczywistego. # Metoda: testowa metoda dostawy akumuluje wysłane wiadomości e-mail w tablicy # ActionMailer :: Base.deliveries. config.action_mailer.delivery_method =: test Czy powinienem po prostu skopiować ten fragment kodu do pliku config/environments/development.rb? – tomciopp

+0

Hmm, nawet jeśli wyłączę dostawę, ale nie potrzebuję jeszcze sposobu na potwierdzenie modułu potwierdzającego , ponieważ nadal dostanę ten sam błąd, który muszę potwierdzić. – tomciopp

+0

Jeśli chodzi o sposób na zaspokojenie go pod względem testów, po prostu sfałszowałem potwierdzenie za pomocą pozorowanego obiektu lub po prostu dostarczając mu kod potwierdzający z DB, ponieważ dostarczenie prawdziwej wiadomości e-mail nie jest ". t co jest ważne w teście. Co ważne, mechanizm potwierdzający działa, prawda? To znaczy, kiedy właściwy kod potwierdzający jest prezentowany za pomocą adresu URL potwierdzającego, chcesz wiedzieć, że jakaś flaga 'potwierdzona' jest odwrócona w DB? – jefflunt

2

W Railsach 3 można użyć "przechwytywacza" do przekierowania wiadomości e-mail dotyczących programowania, zgodnie z opisem w dokumencie Railscast 206.

26

Devise ma również metodę skip_confirmation!, do której można zadzwonić przed zapisaniem, aby uniknąć wysyłania wiadomości. Po prostu ustawia atrybut confirmed_at, co powoduje pominięcie wysyłania wiadomości e-mail.

1

Weź swój model do opracowania. Najczęściej jest to user.rb. I usuń lub skomentuj konfigurację comfirmable. To uniemożliwi proces potwierdzenia

13

takie proste

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

Podobnie jak mały FYI, możesz umieścić wszystko w bloku: 'user = User.new {| u | u.email = '[email protected]'; u.password = 'yourPassword'; u.skip_confirmation! } .save'. Bloki są fajne! – wulftone

3

Jeśli chcesz wagi naprawdę lekki sposób to zrobić, patrzeć w terminalu po rejestracji - wyjście szyny pokazuje e-mail, który dostał wysłany, możesz skopiować i wkleić link potwierdzający, potwierdzić konto, a następnie kontynuować testowanie.

surowy, ale skuteczny.