Issue #1
Erro ao remove comunidade
Ao tentar remover uma comunidade com o plugin de gamificação ativo no console, mas não ativo no environment a comunidade não é removida.
Talvez o erro ocorra mesmo com o plugin ativo no environment
Segue log do erro
Expire fragment views/participa_ma/1.3~rc1/display_content_blocks/667-20151028205155-it 0.4ms
[merit] no target found: Delayed::DeserializationError. /usr/local/rvm/gems/ruby-1.9.3-p551/gems/merit-2.3.2/lib/merit/base_target_finder.rb:13:in find'
[merit] no target found: Delayed::DeserializationError. /usr/local/rvm/gems/ruby-1.9.3-p551/gems/merit-2.3.2/lib/merit/base_target_finder.rb:13:in
find'
[merit] no target found: Delayed::DeserializationError. /usr/local/rvm/gems/ruby-1.9.3-p551/gems/merit-2.3.2/lib/merit/base_target_finder.rb:13:in find'
[merit] NoMethodError on
TrueClass#author(called from Merit::TargetFinder#other_target)
[merit] Couldn't find model to grant reputation to. Refer to https://github.com/tute/merit/issues/171#issuecomment-44185696.
[merit] no target found: Delayed::DeserializationError. /usr/local/rvm/gems/ruby-1.9.3-p551/gems/merit-2.3.2/lib/merit/base_target_finder.rb:13:in
find'
Completed 500 Internal Server Error in 4143.7ms
Rendered /usr/local/rvm/gems/ruby-1.9.3-p551/gems/exception_notification-4.0.1/lib/exception_notifier/views/exception_notifier/request.text.erb (1.9ms)
Rendered /usr/local/rvm/gems/ruby-1.9.3-p551/gems/exception_notification-4.0.1/lib/exception_notifier/views/exception_notifier/title.text.erb (0.6ms)
Rendered /usr/local/rvm/gems/ruby-1.9.3-p551/gems/exception_notification-4.0.1/lib/exception_notifier/views/exception_notifier/session.text.erb (2.2ms)
Rendered /usr/local/rvm/gems/ruby-1.9.3-p551/gems/exceptionnotification-4.0.1/lib/exception_notifier/views/exceptionnotifier/title.text.erb (0.1ms)
Rendered /usr/local/rvm/gems/ruby-1.9.3-p551/gems/exception_notification-4.0.1/lib/exception_notifier/views/exceptionnotifier/_environment.text.erb (3.7ms)
Rendered /usr/local/rvm/gems/ruby-1.9.3-p551/gems/exceptionnotification-4.0.1/lib/exception_notifier/views/exception_notifier/title.text.erb (0.1ms)
Rendered /usr/local/rvm/gems/ruby-1.9.3-p551/gems/exception_notification-4.0.1/lib/exception_notifier/views/exception_notifier/backtrace.text.erb (0.6ms)
Rendered /usr/local/rvm/gems/ruby-1.9.3-p551/gems/exceptionnotification-4.0.1/lib/exceptionnotifier/views/exception_notifier/title.text.erb (0.1ms)
Rendered /usr/local/rvm/gems/ruby-1.9.3-p551/gems/exception_notification-4.0.1/lib/exceptionnotifier/views/exception_notifier/exception_notification.text.erb (56.2ms)
Sent mail to participabr@serpro.gov.br (530.7ms)
NoMethodError (undefined method profile' for true:TrueClass):
config/plugins/gamification/lib/merit/point_rules.rb:50:in
block in '
config/plugins/gamification/lib/merit/point_rules.rb:153:in call'
config/plugins/gamification/lib/merit/point_rules.rb:153:in
profile_condition'
config/plugins/gamification/lib/merit/point_rules.rb:178:in block (4 levels) in initialize'
config/plugins/gamification/lib/merit_ext.rb:62:in
new_merit_action'
config/plugins/gamification/lib/merit_ext.rb:38:in block in has_merit_actions'
app/controllers/my_profile/profile_editor_controller.rb:86:in
destroy_profile'
lib/authenticated_system.rb:10:in call'
lib/authenticated_system.rb:10:in
block in included'
lib/noosfero/scheduler/defer.rb:86:in `process_client'
Started GET "/assets/designs/themes/juventude/images/btn_entrar_login.png" for 177.184.139.82 at 2015-11-03 19:04:45 -0200 Served asset /designs/themes/juventude/images/btn_entrar_login.png - 200 OK (0ms) Started GET "/assets/plugins/display_content/javascripts/jstree/jquery.jstree-9acb282b4646e94bf14c0776953e1eb4.js" for 177.184.139.82 at 2015-11-03 19:05:13 -0200
-
Esse erro acontece quando a gem Merit vai carregar um registro apagado a partir do campo target_data da tabela merit_actions. Nesse caso, é executado YAML.load. Veja o commit que adiciona essa feature (https://github.com/merit-gem/merit/commit/e6be375bbd2de872578a1abc3f130c477db5b1e7).
A partir de um monkey patch do delayed_job (https://github.com/collectiveidea/delayed_job/issues/587) no YAML, registros ActiveRecord serializados passam a carregar o registro do banco e vez de desserializar o yaml como requisitado em YAML.load. Quando o registro não existe ele lança a exceção DeserializationError.
Como definido com Victor:
- Victor vai verificar a possibilidade de parar de usar o target_data como no commit acima
- Hugo criar um MR que evita quebrar quando algum campo não puder ser carregado como nesse caso.