предупреждение: уже инициализированная константа после установки гем tlsmail? - PullRequest
2 голосов
/ 09 января 2012

После того, как я установил гем tlsmail для доставки электронной почты в свою учетную запись gmail , эти ошибки продолжают появляться каждый раз, когда я запускаю команду rake:

c:/Ruby192/lib/ruby/gems/1.9.1/gems/tlsmail-0.0.1/lib/net/smtp.rb:806: warning: already initialized constant SMTPSession
c:/Ruby192/lib/ruby/gems/1.9.1/gems/tlsmail-0.0.1/lib/net/pop.rb:687: warning: already initialized constant POP
c:/Ruby192/lib/ruby/gems/1.9.1/gems/tlsmail-0.0.1/lib/net/pop.rb:688: warning: already initialized constant POPSession
c:/Ruby192/lib/ruby/gems/1.9.1/gems/tlsmail-0.0.1/lib/net/pop.rb:689: warning: already initialized constant POP3Session
c:/Ruby192/lib/ruby/gems/1.9.1/gems/tlsmail-0.0.1/lib/net/pop.rb:702: warning: already initialized constant APOPSession

Как мне избавиться от этих предупреждений?


gem 'rails', '3.0.10'
gem "rake", "0.8.7"
gem "pg", "0.12.0"
gem "cancan", "1.6.7"
gem "geocoder", "1.0.5"
gem "will_paginate", "3.0.2"
gem "rails3-jquery-autocomplete"
gem "jquery-rails", "1.0.19"
gem "dynamic_form", "1.1.4"
gem "devise", "1.5.3"
gem "thin", "1.3.1"
gem 'sunspot_rails', '1.2.1'
gem "tlsmail"

Ответы [ 3 ]

9 голосов
/ 02 февраля 2012

Если вы не хотите изменять гем, попробуйте следующее:

require 'net/smtp'
Net.instance_eval {remove_const :SMTPSession} if defined?(Net::SMTPSession)

require 'net/pop'
Net::POP.instance_eval {remove_const :Revision} if defined?(Net::POP::Revision)
Net.instance_eval {remove_const :POP} if defined?(Net::POP)
Net.instance_eval {remove_const :POPSession} if defined?(Net::POPSession)
Net.instance_eval {remove_const :POP3Session} if defined?(Net::POP3Session)
Net.instance_eval {remove_const :APOPSession} if defined?(Net::APOPSession)

require 'tlsmail'

Предварительная загрузка гемов net/smtp и net/pop и уничтожение констант не позволяет tlsmail пытаться загрузить и записатьнад постоянными.Это грязный, грязный хак ... но он работает!

(Ruby 1.9.2, tlsmail 0.0.1)

4 голосов
/ 09 января 2012

По крайней мере, кажется, что ты не один.Я не очень знаком с этим драгоценным камнем, но похоже, что это может быть исправлением для вас: http://blog.snootymonkey.com/post/892799550/already-initialized-constant-warnings

Возможно, что ActionMailer (или какой-либо другой почтовый код / ​​плагин) включен по умолчанию как частьиз Rails 3. Не цитируйте меня об этом, но это мое необоснованное предположение, откуда могут исходить конфликтующие имена.

0 голосов
/ 19 июня 2014

tlsmail был обратным портом почты ruby ​​1.9 до 1.8.Поэтому вам не нужен tlsmail в ruby ​​1.9 или более поздней версии.

Эта библиотека динамически заменяет net / smtp и net / pop на них в ruby ​​1.9 и включает pop или smtp через SSL / TLS.

http://rubydoc.info/gems/tlsmail/0.0.1/frames

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...