metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2010-10-02 03:04 pm

Ruby on Rails, Redmine, action_mailer и сертификат сервера

Установленный редмайн не может посылать почту с stmp-сервера с кривым сертификатом:
An error occurred while sending mail (hostname was not match with the server certificate)

Лечится это как описано здесь, редактированием файла /usr/share/rails/actionmailer/lib/action_mailer/base.rb и добавлением опции "enable_starttls_auto".

Но это выглядит каким-то адским грязным хаком, исправлять файло в совершенно левой либе, хорошо, что я почти уверен, что от этих рельс на системе больше ничего не зависит.

Руби-Рельсо-гуру есть? Может кто знает более адекватный способ решения проблемы.
По идее, конечно надо чтобы на хостере сертификат пофиксили, но хз как и что там.

[identity profile] smetan.livejournal.com 2010-10-02 04:18 pm (UTC)(link)
Monkey patching (http://en.wikipedia.org/wiki/Monkey_patch) is a true ruby way. В руби класс можно окрыть уже после загрузки (и даже во время исполнения) и допилить как тебе нравится. В рельсах лучшее для этого место - config/environment.rb

[identity profile] metaclass.livejournal.com 2010-10-02 04:24 pm (UTC)(link)
О, истинное кошернейшее вуду, нужно будет эту возможность обдумать :)

[identity profile] smetan.livejournal.com 2010-10-02 04:39 pm (UTC)(link)
Это не возможность, а общепринятая практика :)
develop7: (Default)

[personal profile] develop7 2010-10-02 05:15 pm (UTC)(link)
Ебаать. А, скажем, инициализировать мылер (в рельсах) с какими нужно настройками — не? И дать возможность перекрыть инициализацию мылера — черви запрещают?

[identity profile] smetan.livejournal.com 2010-10-02 05:54 pm (UTC)(link)
Может гуру меня неправильно понял? Я отвечал на вопрос "как допиливать стороннюю либу, не трогая её код".
develop7: (Default)

[personal profile] develop7 2010-10-02 06:03 pm (UTC)(link)
Я понял, извините за излишнюю экспрессивность.
Просто интересно, неужели ребе metaclass — первый, кто натыкается на эти грабли и все предшественники тоже манкипатчили action_mailer?

[identity profile] metaclass.livejournal.com 2010-10-02 06:07 pm (UTC)(link)
Не, я не первый, я ж это решение в гугле нашел. Только это не monkey patch а просто хак и патч руками либы :)

[identity profile] smetan.livejournal.com 2010-10-02 06:21 pm (UTC)(link)
В зависимости от версии redmine/rails/ruby.
В простейшем случае достаточно строчки ActionMailer::Base.smtp_settings[:enable_starttls_auto] = false в config/environment.rb
develop7: (Default)

[personal profile] develop7 2010-10-02 06:28 pm (UTC)(link)
Аа, ну тогда всё хорошо.