Использование регулярных выражений bash =~
:
$ var=/home/bamboo/bamboo-agent-home/xml-data/build-dir/NG-VOSGQL239-JOB
$ [[ $var =~ .*/ ]] && echo "${BASH_REMATCH[0]}"
/home/bamboo/bamboo-agent-home/xml-data/build-dir/
Вы могли добавить средство доступа к своей пользовательской модели, чему-то как "skip_activation", который не должен будет быть сохранен, но сохранился бы через сессию и затем проверил бы флаг в наблюдателя. Что-то как
class User
attr_accessor :skip_activation
#whatever
end
Затем в наблюдателе:
def after_save(user)
return if user.skip_activation
#rest of stuff to send email
end
В обычно, для этих видов ситуаций, Вы можете:
В этом случае я сказал бы, что № 3 является Вашим лучшим выбором.
Нет простого способа отключить наблюдателей, о которых я знаю, но звучит возможным добавить логику к Вашему наблюдателю для не отправки электронного письма, когда код активации установлен...
Поскольку другие подсказали; я перенес бы нежелательную логику в Вашего Наблюдателя с простым если оператор.
def after_create
send_email if RAILS_ENV == "production"
end
При запущении тестов на приложении я продолжаю работать, я использую следующее:
Model.delete_observers
Вы можете отключить метод наблюдателя;
MessageObserver.send(:remove_method, :after_create)
Остановит: after_create на MessageObserver, удалив его.