好的,Rails noob问一个问题。我在这里第一次尝试做Rails。我正在阅读Agile Web Dev with Rails 4th ed。我的生产箱上出现了这个错误。 这在webrick下的开发模式下工作,我收到一封发送到我的gmail帐户和evrything的电子邮件但是在我的生产模式的apache框中我收到此错误...
Errno::ECONNREFUSED in OrdersController#create
Connection refused - connect(2)
应用程序跟踪是......
app/controllers/orders_controller.rb:58:in `create'
app/controllers/orders_controller.rb:54:in `create'
这里是app / controllers / order_controller.rb中的def创建
def create
@order = Order.new(params[:order])
@order.add_line_items_from_cart(current_cart)
respond_to do |format| #THIS IS LINE 54
if @order.save
Cart.destroy(session[:cart_id])
session[:cart_id] = nil
Notifier.order_received(@order).deliver #THIS IS LINE 58
format.html { redirect_to(store_url, :notice => I18n.t('.thanks')) }
format.xml { render :xml => @order, :status => :created, :location => @order }
else
format.html { render :action => "new" }
format.xml { render :xml => @order.errors, :status => :unprocessable_entity }
end
end
我的第58和54号线出了什么问题?这与app / config / environment.rb中的action_mailer设置有关吗?
这是environment.rb
# Load the rails application
require File.expand_path('../application', __FILE__)
# Initialize the rails application
Depot::Application.initialize!
#uncertain about anything below this line
Depot::Application.configure do
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "gmail.com",
:authentication => "plain",
:user_name => "myemail@gmail.com",
:password => "<password>",
:enable_starttls_auto => true
}
end
感谢任何帮助。感谢。
答案 0 :(得分:5)
我在阅读本书时遇到同样的问题,但以下配置使其有效:
config.action_mailer.smtp_settings = {
enable_starttls_auto: true,
address: 'smtp.gmail.com',
port: 587,
authentication: 'plain',
user_name: 'myemail@gmail.com',
password: '<password>'
}
请注意,我没有在smtp_settings
哈希上包含域。
最后一件事,请务必在进行更改后重新启动rails应用程序。这将为您节省一些不必要的麻烦。
答案 1 :(得分:2)
声誉太低而无法评论,但在@ Edgar的回答中,还要确保如果您正在阅读用于smtp设置的YAML配置,则使用symbolize_keys!
:
email_settings = YAML::load(File.open("#{Rails.root.to_s}/config/email.yml"))
config.action_mailer.smtp_settings = email_settings[Rails.env].symbolize_keys! unless email_settings[Rails.env].nil?
Rails没有检查字符串键,而且好,这是一个很长的3个小时......