gpt4 book ai didi

ruby-on-rails - #deliver 上的 Rails 邮件程序类型错误

转载 作者:行者123 更新时间:2023-12-03 15:49:43 26 4
gpt4 key购买 nike

我正在尝试在 4.1.1 中调试此邮件错误并且无法弄清楚如何获取有关要查看的内容的更多信息:

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

这是 Controller ,错误中的第 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围绕我的 Controller 操作获取有关错误的更多信息,但它只是说这是一个类型错误。无论如何我可以从记录器或其他东西那里获得更多信息吗?该错误让我认为这是一个配置设置或没有通过的东西,但我不知道在哪里继续寻找。

编辑:这是错误的其余部分:
 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>'

最佳答案

您的 SMTP_SERVER env 变量为零。

我可以通过以下方式始终重现此错误:

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 .

您应该强制您的代码在配置文件中验证您需要的所有环境变量的值,而不是假设它们有值。

关于ruby-on-rails - #deliver 上的 Rails 邮件程序类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26129710/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com