2012-03-14 15 views
5

Ho aggiunto un sistema sul mio progetto per reimpostare la password di un utente e inviarlo via e-mail nel caso lo dimenticasse. Funzionava bene ieri (quando l'ho implementato). Quando ho provato a far funzionare il server oggi, ho ricevuto il seguente errore.Metodo non definito 'default_content_type =' in ActionMailer in 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>' 

Questo è il mio file di configurazione/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" 

Se io commento la linea ActionMailer::Base.default_content_type = "text/html", il server funziona senza alcun problema. Ma senza di esso, non posso inviare e-mail.

ho aggiunto questo a config/ambienti di file/development.rb ieri

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 } 

Ho provato a riavviare il Mac, l'esecuzione di "aggiornamento fascio" e la reinstallazione di rotaie senza alcun risultato.

Sto usando Rails 3.2.1 su Ruby 1.9.3. Per favore aiuto.

+0

non è necessario default_content_type. Che errore ricevi quando provi a inviare un'email? Inoltre, disponi di estensioni di visualizzazione appropriate per l'e-mail che stai tentando di inviare. (action.format.template) – AMIT

+0

Ho menzionato nella domanda che l'intero sistema stava funzionando bene ieri. E non inviava le e-mail fino a quando non ho aggiunto quella riga a environment.rb. Ho creato estensioni di visualizzazione per HTML ma non per testo. –

risposta

8

Si può provare

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

Ha funzionato! Grazie! Per curiosità, qualche idea sul perché la linea precedente funzionasse ieri, ma non oggi? –

+1

@VinaySShenoy: le opzioni di configurazione non vengono lette fino a quando il server non viene riavviato; probabilmente lo hai fatto funzionare ieri, ma dovevo riavviarlo oggi, e questo è il momento in cui è stata letta la configurazione modificata. – fakeleft

+0

Ho anche questo problema con un po 'di differenza quindi ho deciso di farti una domanda qui invece di fare una nuova domanda. Il diverso del mio progetto è che aggiungo questo in Environment.rb: ** config.action_mailer.delivery_method =: smtp | : sendmail | : test ** Come posso gestirlo? (Grazie!) –

Problemi correlati