2012-01-27 11 views
0

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ファイルのファイルは次のとおりです。

01ここで
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_autotruefalseの両方に設定しようとしました。 falseに設定するとセグメンテーション違反は発生しませんが、電子メールが出ていないので役に立たないです。

私は簡単に私のMacからこのコマンドを実行して、GmailのSMTPサービスに接続することができるよ:次に進む手順

$ telnet smtp.gmail.com 587 

わからない - 任意の提案を?

+0

オペレーティングシステムにこれを追加することですか?もしウィンドウが...:X –

+0

私はMacOS 10.7.2を使っています。 –

+0

私は同じ問題を抱えています:( – Kir

答えて

1

私は非常に似たエラー(ネット/ http)を持っていました。これを行う

はそれを修正:

rvm pkg install openssl 
rvm pkg install iconv 
rvm pkg install readline 
rvm reinstall 1.9.3 --with-iconv-dir=$rvm_path/usr --with-openssl-dir=$rvm_path/usr --with-readline-dir=$rvm_path/usr