After_udpate rails испытание на провал обратного вызова

На моей консоли не было информации, поэтому я отправил на поиски дополнительных решений и нашел их - уникальные решения, представленные здесь. Я столкнулся с этим с Eclipse Oxygen, пытающимся запустить старую Ant для проекта.

Причина 1 Я настроил Eclipse для использования внешней установки Ant, которая была версией 1.10.2, которая, по-видимому, имела в ней классы, которые были скомпилированный с JDK 9. В Eclipse я получил описанную выше ошибку JNI (запуск сборки Ant в командной строке дал мне известную «неподдерживаемую ошибку версии major.minor» - Java, которую я использовал в системе, был JDK 8).

Решение заключалось в откате во встроенную версию Eclipse Ant, являющейся 1.10.1. Я подтвердил это как правильное решение, загрузив Ant 1.10.1 отдельно и переконфигурировав Eclipse, чтобы использовать новый 1.10.1 извне, и он все еще работал.

Причина 2 Это также может произойти, если у вас установлены параметры времени выполнения Ant неправильно настроен в настройках Eclipse. В зависимости от версии Ant вы работаете, вам нужно добавить tools.jar из соответствующего JDK в путь класса, используемый для Ant Runtime (Home Entries). Более конкретно, без надлежащей конфигурации Eclipse будет жаловаться при запуске цели Ant, что версия JRE меньше определенной требуемой версии.

По сути, «правильная настройка» означает выравнивание каждого из элементов конфигурации в Eclipse для запуска Ant, чтобы все они работали вместе. Это включает запись Ant Runtime Home (должна указывать на версию Ant, совместимую с вашим выбранным JDK), вы не можете запустить Ant с JDK 8, когда он был скомпилирован против JDK 9); указав tools.jar, который принадлежит JDK, который вы хотите запустить Ant в настройках Ant Runtime; и, наконец, установить среду JRE вашего скрипта сборки для JDK, который вы хотите запустить Ant в настройке внешних инструментов. Все 3 из этих настроек должны согласиться, чтобы избежать ошибки, описанной выше. Вам также необходимо будет учитывать атрибуты, используемые в тэге javac, чтобы гарантировать, что JDK, который вы используете, способен выполнять, как вы указали (например, JDK 7 не может скомпилировать код с использованием исходной и целевой версии 8).

Более того, если вы действительно пытаетесь запустить скрипт сборки Ant для компиляции кода для более старого JDK (например, менее 8 для Oxygen), эта статья помогла получить доступ к запуску Ant против старше JDK . Существуют версии Ant plugin для нескольких версий Eclipse, инструкции краткие и правильная версия плагина для вашего Eclipse важна.

Или проще вы можете использовать это очень хорошее решение , чтобы выполнить вашу устаревшую компиляцию , которая не требует замены плагина Eclipse, но вместо этого изменит тэг javac в вашем скрипте сборки (при использовании последнего JDK).

1
задан Jeremy Thomas 20 February 2019 в 21:06
поделиться

1 ответ

order_status_id_changed? ложно в точке, где оно вызывается, потому что оно вызывается только после обновления. После сохранения записи изменения переносятся в previous_changes, поэтому вы можете сделать что-то вроде:

def order_just_submitted?
  previous_changes.keys.include?('order_status_id') && is_submitted?
end

Кроме того, вы можете проверить, на какой статус был изменен, если вы не хотите инициировать письмо при любом изменении статуса.

0
ответ дан infused 20 February 2019 в 21:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: