Para borrar proyectos, como ya sabéis, hay que ir a Administración > Actividades, y seleccionar el proyecto que se desee borrar.

Pero si estamos utiilzando una versión antigua de Redmine, puede que obtengamos un error cuando queremos eliminar una rama completa de proyectos (actividades), que tiene a su vez más subproyectos.

El error que se obtiene es algo como:

activerecord::staleobjecterror in projectscontroller#destroy

Esto me ha ocurrido utilizando la versión 1.3.0 de Redmine, e investigando, descubrí que era un bug que tenía y que no se resolvía hasta la versión 1.4.4. Como no podía actualizar de versión por cuestiones del cliente, tuve que localizar el código que corregía dicho bug (http://www.redmine.org/projects/redmine/repository/revisions/9858). Ficheros afectados:

  • /test/unit/issue_test.rb
  • /test/unit/project_test.rb
  • /app/models/issue.rb

A estos cambios, hay que realizar otro más, y es hacer esta pequeña modificación al fichero /app/models/issue.rb dejándolo de la siguiente manera:


def destroy
super
rescue ActiveRecord::StaleObjectError, ActiveRecord::RecordNotFound
# Stale or already deleted
begin
reload
rescue ActiveRecord::RecordNotFound
# The issue was actually already deleted
@destroyed = true
return freeze
end
# The issue was stale, retry to destroy
super
end

La clave es que contenga ActiveRecord::StaleObjectError para que no de errores el bug corregido de la revisión 9858.

Una vez modificados los archivos, se pueden subir directamente al servidor y no es necesario reiniciar al Apache para que se apliquen los cambios.

Puede darse el caso, a mi me dio en el entorno de pruebas, que obtengamos un error de MySQL debido a la gran cantidad de proyectos que queremos eliminar. Para ello, habría que seguir los pasos que describo en esta otra: MySQL error locks exceeds the lock table size

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies