2012-03-14 16 views
5

Dodałem system do mojego projektu, aby zresetować hasło użytkownika i wysłać je do niego pocztą elektroniczną na wypadek, gdyby go zapomniał. To działało dobrze wczoraj (kiedy go zaimplementowałem). Kiedy próbowałem dzisiaj odpalić serwer, dostałem następujący błąd.Niezdefiniowana metoda 'default_content_type =' w ActionMailer w Rails 3.2.1

=> Booting WEBrick 
=> Rails 3.2.1 application starting in development on http://0.0.0.0:3000 
=> Call with -d to detach 
=> Ctrl-C to shutdown server 
Exiting 
/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer/base.rb:437:in `method_missing': undefined method `default_content_type=' for ActionMailer::Base:Class (NoMethodError) 
from /Users/vinayshenoy/flo-server/config/environment.rb:7:in `<top (required)>' 
from /Users/vinayshenoy/flo-server/config.ru:4:in `require' 
from /Users/vinayshenoy/flo-server/config.ru:4:in `block in <main>' 
from /Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/rack-1.4.1/lib/rack/builder.rb:51:in `instance_eval' 
from /Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/rack-1.4.1/lib/rack/builder.rb:51:in `initialize' 
from /Users/vinayshenoy/flo-server/config.ru:1:in `new' 
from /Users/vinayshenoy/flo-server/config.ru:1:in `<main>' 
from /Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/rack-1.4.1/lib/rack/builder.rb:40:in `eval' 
from /Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/rack-1.4.1/lib/rack/builder.rb:40:in `parse_file' 
from /Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/rack-1.4.1/lib/rack/server.rb:200:in `app' 
from /Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.1/lib/rails/commands/server.rb:46:in `app' 
from /Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/rack-1.4.1/lib/rack/server.rb:301:in `wrapped_app' 
from /Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/rack-1.4.1/lib/rack/server.rb:252:in `start' 
from /Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.1/lib/rails/commands/server.rb:70:in `start' 
from /Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.1/lib/rails/commands.rb:55:in `block in <top (required)>' 
from /Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.1/lib/rails/commands.rb:50:in `tap' 
from /Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/railties-3.2.1/lib/rails/commands.rb:50:in `<top (required)>' 
from script/rails:6:in `require' 
from script/rails:6:in `<main>' 

To jest mój plik config/environment.rb

# Load the rails application 
require File.expand_path('../application', __FILE__) 

# Initialize the rails application 
FloServer::Application.initialize! 

ActionMailer::Base.default_content_type = "text/html" 

Gdybym wykomentuj linię ActionMailer::Base.default_content_type = "text/html", serwer działa bez problemu. Ale bez niego nie mogę wysyłać e-maili.

dodałem to do środowisk config/pliku/development.rb wczoraj

config.action_mailer.delivery_method = :smtp 
config.action_mailer.smtp_settings = { 
:address    => "smtp.gmail.com", 
:port     => 587, 
:user_name   => 'username', 
:password    => 'password', 
:authentication  => 'plain', 
:enable_starttls_auto => true } 

Próbowałem ponownym uruchomieniu komputera Mac z systemem "aktualizacji pęczek" i ponowne zainstalowanie szyn bez żadnych rezultatów.

Używam Rails 3.2.1 na Ruby 1.9.3. Proszę pomóż.

+0

default_content_type nie jest potrzebne. Jaki błąd pojawia się przy próbie wysłania e-maila? Masz również odpowiednie rozszerzenia widoku dla e-maila, który próbujesz wysłać. (action.format.template) – AMIT

+0

Wspomniałem w pytaniu, że cały system działał dobrze wczoraj. I nie wysyłał e-maili, dopóki nie dodałem tej linii do environment.rb. Utworzyłem rozszerzenia widoku dla html, ale nie dla tekstu. –

Odpowiedz

8

Można spróbować

ActionMailer::Base.default :content_type => "text/html" 
+0

Udało się! Dzięki! Z ciekawości, jakikolwiek pomysł, dlaczego wcześniejsza linia działała wczoraj, ale nie dzisiaj? –

+1

@VinaySShenoy: opcje konfiguracji nie są odczytywane do czasu ponownego uruchomienia serwera; Prawdopodobnie uruchomiłeś go wczoraj, ale musiałeś go zrestartować już dziś, i wtedy zmieniono konfigurację – fakeleft

+0

Mam ten problem również z nieco innym, więc postanowiłem zapytać cię tutaj, zamiast zadawać nowe pytanie. Innym moim projektem jest dodanie go w środowisku Environment.rb: ** config.action_mailer.delivery_method =: smtp | : sendmail | : test ** Jak mogę sobie z tym poradzić? (Dziękuję!) –

Powiązane problemy