Рельсы-2.3. *
# app/models/user_mailer.rb
class UserMailer < ActionMailer::Base
def self.smtp_settings
USER_MAILER_SMTP_SETTINGS
end
def spam(user)
recipients user.mail
from 'spam@example.com'
subject 'Enlarge whatever!'
body :user => user
content_type 'text/html'
end
end
# config/environment.rb
ActionMailer::Base.smtp_settings = standard_smtp_settings
USER_MAILER_SMTP_SETTINGS = user_smtp_settings
# From console or whatever...
UserMailer.deliver_spam(user)
Я могу подтвердить с помощью Code :: Blocks и VC ++ 2005, что он не дает намеков, где возникает ошибка. Также не объявляется справка вашего собственного частного конструктора копирования.
#include <boost/noncopyable.hpp>
class X: boost::noncopyable
{
};
void foo(X x) {}
int main()
{
X x;
foo(x);
}
Журнал компиляции (пятая строка - последняя строка объявления класса):
main.cpp (5): error C2248: 'boost :: noncopyable _ :: noncopyable :: noncopyable ': невозможно получить доступ к закрытому члену, объявленному в классе' boost :: noncopyable _ :: noncopyable ' C: \ boost_1_38_0 \ boost / noncopyable.hpp (27): см. Объявление 'boost :: noncopyable _ :: noncopyable :: noncopyable' C: \ boost_1_38_0 \ boost / noncopyable.hpp (22): см. Объявление 'boost :: noncopyable _ :: noncopyable' Эта диагностика произошла в сгенерированной компилятором функции 'X :: X (const X &)'
. Если не будет переключателя компилятора для включения более тщательной диагностики ошибок, я не впервые просто скомпилирую файл с GCC (MinGW), чтобы получить более полезную диагностику ошибок. (Увы, ваш код не должен содержать расширений VC ++.)
Вы можете временно создать ручной конструктор копирования (с той же подписью) и реализацию по умолчанию, просто с целью отслеживания этой ошибки ..? Не уверен, что это упростит поиск.
Откройте окно вывода, в котором отображается полный журнал строительства. Проверьте там сообщение об ошибке. В этом сообщении об ошибке обычно можно найти дополнительную информацию, которая поможет отследить источник проблемы.
Если дважды щелкнуть проблему в списке ошибок и перейти в окно вывода, курсор будет перемещен на это сообщение об ошибке.
В окне вывода или в журнале сборки вы должны увидеть, где компилятор пытался использовать шаблон в вашем коде ... однако вам придется немного прокрутить.
Если в журналах сборки недостаточно информации, есть также опция, контролирующая подробность сборки msbuild:
Инструменты-> Параметры-> Проекты и решения-> Сборка и запуск-> Подробность вывода проекта MSBuild