TCPSocket

时间:2016-03-11 11:25:48

标签: ruby-on-rails ruby heroku

我在我的一个rails app developpement上遇到了问题。我使用heroku来部署我的rails应用程序(prod env)。而且我对开发和环境之间存在误解。

当我在dev env(rails控制台,在我本地的计算机上)的rails控制台中执行“require'socket'; TCPSocket.new(nil,80)”时,在heroku的rails命令中使用相同的命令(heroku)运行rails控制台),我没有相同的结果。

在开发环境中,我得到“#TCPSocket:fd 18”然后没有问题发生但在prod环境中我得到“Errno :: ECONNREFUSED:连接被拒绝 - 连接(2)为nil端口80

from(irb):1:in initialize' from (irb):1:in new'

来自(irb):1

来自/app/vendor/bundle/ruby/2.3.0/gems/railties 4.2.5 / lib / rails / commands / console.rb:110:in“start”

来自/app/vendor/bundle/ruby/2.3.0/gems/railties-4.2.5/lib/rails/commands/console.rb:9:in,start'

来自/app/vendor/bundle/ruby/2.3.0/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:68:in“console”

来自/app/vendor/bundle/ruby/2.3.0/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:39:in“run_command!”

来自/app/vendor/bundle/ruby/2.3.0/gems/railties-4.2.5/lib/rails/commands.rb:17:in`'

来自/ app / bin / rails:9:在`require'

来自/ app / bin / rails:9:main

我有相同的环境(相同版本的红宝石,铁轨等......) 所以,如果你们中的一个人之前已经遇到过问题,或者可以解释TCPSocket在这种情况下的行为。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

你的config / production.rb邮件是否看起来像这样?

 config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :smtp
  host = 'yoursubdomain.herokuapp.com'
  config.action_mailer.default_url_options = { host: host }
  ActionMailer::Base.smtp_settings = {
    :address        => 'smtp.sendgrid.net',  //or whichever u use 
    :port           => '587',
    :authentication => :plain,
    :user_name      => ENV['SENDGRID_USERNAME'],
    :password       => ENV['SENDGRID_PASSWORD'],
    :domain         => 'heroku.com',
    :enable_starttls_auto => true
  }