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