OK - 私はここで私の頭上にあります。私が使用しています:Rails 3 - Devise/ActionMailer/RUBY-SMTPがセグメンテーションフォルトを引き起こしています
- ruby-1.9.3-p0
- rails-3.1.3
- mail-2.3.0
- devise-1.5.3
考案の:confirmable
オプションをオンにし、私のアプリでSMTPサービスを起動しようとしています。 /config/initializers/setup_mail.rb
を追加し、私のDBにDeviseの必要な列を追加し、:confirmable
属性をUser
というモデルに追加すると、セグメント化エラーが発生します。ユーザーがサインアップした直後に発生します。
... lib/ruby/1.9.1/net/smtp.rb:583: [BUG] Segmentation fault
log/development.log
の最後のエントリ:
Rendered devise/mailer/confirmation_instructions.html.erb (1.2ms)
マイ/config/initializers/setup_mail.rb
ファイル:
ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "mydomain.com",
:user_name => "[email protected]",
:password => "???????",
:authentication => "plain",
:enable_starttls_auto => true
}
ActionMailer::Base.default_url_options[:host] = "localhost:3000"
Devise
は、以下でクラッシュするルビーのSMTPライブラリを引き起こし、確認のメールを送信しようとしています
My config/environments/development.rb
ファイルのファイルは次のとおりです。
config.action_mailer.delivery_method = :smtp
config.action_mailer.raise_delivery_errors = true
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
はルビー/ 1.9.1 /ネット/ smtp.rbからゲルマンのコードは、(ライン583は、中央付近にある)である:
def ssl_socket(socket, context)
OpenSSL::SSL::SSLSocket.new socket, context
end
def tlsconnect(s)
verified = false
s = ssl_socket(s, @ssl_context)
logging "TLS connection started"
s.sync_close = true
s.connect # THIS IS LINE 583
if @ssl_context.verify_mode != OpenSSL::SSL::VERIFY_NONE
s.post_connection_check(@address)
end
verified = true
s
ensure
s.close unless verified
end
SMTPがしようとしているとき、セグメンテーションフォールトが発生したように見えますSSLソケット接続(s.connect
)で接続します。 setup_mail.rb
では:enable_starttls_auto
をtrue
とfalse
の両方に設定しようとしました。 false
に設定するとセグメンテーション違反は発生しませんが、電子メールが出ていないので役に立たないです。
私は簡単に私のMacからこのコマンドを実行して、GmailのSMTPサービスに接続することができるよ:次に進む手順
$ telnet smtp.gmail.com 587
わからない - 任意の提案を?
オペレーティングシステムにこれを追加することですか?もしウィンドウが...:X –
私はMacOS 10.7.2を使っています。 –
私は同じ問題を抱えています:( – Kir