2014-09-30 100 views
3

我想在4.1.1調試此郵件錯誤,無法弄清楚如何得到什麼尋找到的詳細信息:Rails的梅勒類型錯誤的#deliver

TypeError (no implicit conversion of nil into String): 
    app/controllers/api/v1/contact_form_controller.rb:5:in `create' 

這裏的控制器,5號線錯誤是這裏的第二行:

def create 
    @mail = ContactFormMailer.contact_email(contact_params).deliver 
    # ContactFormSender.perform_async(contact_params) 
    render nothing: true, status: 200 
    end 

我的郵件看起來是這樣的:

class ContactFormMailer < ActionMailer::Base 
    default from: ENV["CONTACT_EMAIL"] 

    def contact_email(args) 
    @from = args[:from] 
    @body = args[:body] 
    @title = args[:title] 
    mail(to: ENV["CONTACT_EMAIL"], subject: 'Contact form') 
    end 
end 

的誤差只有拋出當我打電話deliver,這使我相信,這是一個mailer.config問題,但一切我已經研究過的Gmail似乎是正確的:

config.action_mailer.raise_delivery_errors = true 
    config.action_mailer.perform_deliveries = true 
    config.action_mailer.default_url_options = { :host => ENV["DOMAIN"] } 
    config.action_mailer.delivery_method = :smtp 
    config.action_mailer.smtp_settings = 
    { 
     address: ENV["SMTP_SERVER"], 
     port: 587, 
     domain: ENV["MAILER_DOMAIN"], 
     authentication: "plain", 
     enable_starttls_auto: true, 
     user_name: ENV["SMTP_USER"], 
     password: ENV["SMTP_PWD"] 
    } 

我翻了一番檢查了所有我ENV變量,試圖把begin rescue end圍繞我的控制器動作獲取有關錯誤的更多信息,但它只是說它是一個類型錯誤。無論如何,我可以從記錄器或其他東西獲得更多信息嗎?這個錯誤讓我認爲它是一個配置設置或者沒有被傳遞的東西,但是我不知道在哪裏繼續尋找。

編輯:這是錯誤的休息:

Rendered /Users/evan/.rvm/gems/ruby-2.1.2/gems/actionpack-4.1.1/lib/action_dispatch/middleware/templates/rescues/_source.erb (1.0ms) 
    Rendered /Users/evan/.rvm/gems/ruby-2.1.2/gems/actionpack-4.1.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (2.1ms) 
    Rendered /Users/evan/.rvm/gems/ruby-2.1.2/gems/actionpack-4.1.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.5ms) 
    Rendered /Users/evan/.rvm/gems/ruby-2.1.2/gems/actionpack-4.1.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (28.8ms) 

編輯2:這裏是真正的回溯:

# /Users/evan/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/smtp.rb:541:in `initialize' 
# /Users/evan/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/smtp.rb:541:in `open' 
# /Users/evan/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/smtp.rb:541:in `tcp_socket' 
# /Users/evan/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/smtp.rb:551:in `block in do_start' 
# /Users/evan/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/timeout.rb:91:in `block in timeout' 
# /Users/evan/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/timeout.rb:101:in `call' 
# /Users/evan/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/timeout.rb:101:in `timeout' 
# /Users/evan/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/smtp.rb:550:in `do_start' 
# /Users/evan/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/smtp.rb:520:in `start' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/mail-2.5.4/lib/mail/network/delivery_methods/smtp.rb:112:in `deliver!' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/mail-2.5.4/lib/mail/message.rb:248:in `deliver!' 
# ./app/controllers/api/v1/contact_form_controller.rb:5:in `create' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/actionpack-4.1.1/lib/action_controller/metal/implicit_render.rb:4:in `send_action' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/actionpack-4.1.1/lib/abstract_controller/base.rb:189:in `process_action' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/actionpack-4.1.1/lib/action_controller/metal/rendering.rb:10:in `process_action' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/actionpack-4.1.1/lib/abstract_controller/callbacks.rb:20:in `block in process_action' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.1/lib/active_support/callbacks.rb:113:in `call' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.1/lib/active_support/callbacks.rb:113:in `call' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.1/lib/active_support/callbacks.rb:166:in `block in halting' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.1/lib/active_support/callbacks.rb:166:in `call' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.1/lib/active_support/callbacks.rb:166:in `block in halting' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.1/lib/active_support/callbacks.rb:229:in `call' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.1/lib/active_support/callbacks.rb:229:in `block in halting' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.1/lib/active_support/callbacks.rb:166:in `call' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.1/lib/active_support/callbacks.rb:166:in `block in halting' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.1/lib/active_support/callbacks.rb:86:in `call' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.1/lib/active_support/callbacks.rb:86:in `run_callbacks' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/actionpack-4.1.1/lib/abstract_controller/callbacks.rb:19:in `process_action' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/actionpack-4.1.1/lib/action_controller/metal/rescue.rb:29:in `process_action' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/actionpack-4.1.1/lib/action_controller/metal/instrumentation.rb:31:in `block in process_action' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.1/lib/active_support/notifications.rb:159:in `block in instrument' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.1/lib/active_support/notifications/instrumenter.rb:20:in `instrument' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/activesupport-4.1.1/lib/active_support/notifications.rb:159:in `instrument' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/actionpack-4.1.1/lib/action_controller/metal/instrumentation.rb:30:in `process_action' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/actionpack-4.1.1/lib/action_controller/metal/params_wrapper.rb:250:in `process_action' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.1/lib/active_record/railties/controller_runtime.rb:18:in `process_action' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/actionpack-4.1.1/lib/abstract_controller/base.rb:136:in `process' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/actionview-4.1.1/lib/action_view/rendering.rb:30:in `process' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/actionpack-4.1.1/lib/action_controller/test_case.rb:595:in `process' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/actionpack-4.1.1/lib/action_controller/test_case.rb:64:in `process' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/actionpack-4.1.1/lib/action_controller/test_case.rb:501:in `post' 
# ./spec/controllers/api/v1/contact_form_controller_spec.rb:7:in `block (3 levels) in <top (required)>' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/example.rb:151:in `instance_exec' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/example.rb:151:in `block in run' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/example.rb:221:in `call' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/example.rb:221:in `call' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-rails-3.1.0/lib/rspec/rails/example/controller_example_group.rb:179:in `block (2 levels) in <module:ControllerExampleGroup>' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/example.rb:321:in `instance_exec' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/example.rb:321:in `instance_exec' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/hooks.rb:380:in `execute_with' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/hooks.rb:446:in `block (2 levels) in run' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/example.rb:221:in `call' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/example.rb:221:in `call' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-rails-3.1.0/lib/rspec/rails/adapters.rb:72:in `block (2 levels) in <module:MinitestLifecycleAdapter>' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/example.rb:321:in `instance_exec' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/example.rb:321:in `instance_exec' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/hooks.rb:380:in `execute_with' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/hooks.rb:446:in `block (2 levels) in run' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/example.rb:221:in `call' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/example.rb:221:in `call' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/hooks.rb:447:in `run' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/hooks.rb:500:in `run' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/example.rb:330:in `with_around_example_hooks' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/example.rb:148:in `run' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/example_group.rb:500:in `block in run_examples' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/example_group.rb:496:in `map' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/example_group.rb:496:in `run_examples' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/example_group.rb:463:in `run' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/example_group.rb:464:in `block in run' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/example_group.rb:464:in `map' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/example_group.rb:464:in `run' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/runner.rb:111:in `block (2 levels) in run_specs' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/runner.rb:111:in `map' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/runner.rb:111:in `block in run_specs' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/reporter.rb:53:in `report' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/runner.rb:107:in `run_specs' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/runner.rb:85:in `run' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/runner.rb:69:in `run' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/lib/rspec/core/runner.rb:37:in `invoke' 
# /Users/evan/.rvm/gems/ruby-2.1.2/gems/rspec-core-3.1.1/exe/rspec:4:in `<top (required)>' 
# /Users/evan/.rvm/gems/ruby-2.1.2/bin/rspec:23:in `load' 
# /Users/evan/.rvm/gems/ruby-2.1.2/bin/rspec:23:in `<main>' 
# /Users/evan/.rvm/gems/ruby-2.1.2/bin/ruby_executable_hooks:15:in `eval' 
# /Users/evan/.rvm/gems/ruby-2.1.2/bin/ruby_executable_hooks:15:in `<main>' 
+1

你可以發佈堆棧跟蹤的其餘部分嗎? – PericlesTheo 2014-09-30 22:40:10

+0

yeap,增加了它,我不知道如何閱讀它 – user2936314 2014-10-01 00:11:52

+0

這不可能是整個回溯。 – 2014-10-03 11:54:35

回答

1

SMTP_SERVER環境變量是零。

我可以一致地重現此錯誤有:

2.1.2 :004 > TCPSocket.open nil, 40 
TypeError: no implicit conversion of nil into String 
    from (irb):4:in `initialize' 
    from (irb):4:in `open' 
    from (irb):4 
    from /Users/mauricio/.rvm/rubies/ruby-2.1.2/bin/irb:11:in `<main>' 

你可以看到它打破here實際線路。

你應該強迫你的代碼來驗證有您需要正確的配置文件,而不是假設的存在價值對他們所有的ENV變量的值。

+0

是的!謝謝!說我必須等待獎勵賞金。出於某種原因,env變量不會從我的'.yml'到我的應用程序,我硬編碼的值,它的工作。奇怪的是,如果我在分界線之前放置ENV ['SMTP_SERVER']',它將返回正確的值,但如果它沒有硬編碼,則連接將失敗。乾杯! – user2936314 2014-10-04 00:14:20