Migración del complemento de Redmine a Rails 3

Estoy tratando de correr Complemento de seguimiento de tiempo con Redmine 2.0.1 en Bitnami Stack. Descubrí que es incompatible con Redmine 2.* pero no pudo detenerme. Entonces, coloqué este complemento en ../redmine/htdocs/plugins/redmine_time_tracker, lo migré con rake db:migrate_plugins RAILS_ENV=production, rutas cambiadas al estilo de Rails 3 en redmine_time_tracker/config/routes.rb y cambió el nombre de todos los archivos en redmine_time_tracker/app/views de *.rhtml a *.html.erb. Después de otro reinicio de Redmine, descansé contra la pared. Hay un mensaje de error en el archivo production.log de Redmine:

Started GET "/redmine" for 127.0.0.1 at Tue Jun 12 22:36:05 +0400 2012
Processing by WelcomeController#index as HTML
  Rendered welcome/index.html.erb within layouts/base (9.5ms)
  Rendered plugins/redmine_time_tracker/app/views/time_trackers/_embed_menu.html.erb (203.0ms)
  Rendered plugins/redmine_time_tracker/app/views/time_trackers/_update_menu.html.erb (203.5ms)
Completed 500 Internal Server Error in 252ms

ActionView::Template::Error (undefined method `time_tracker_for' for #<#<Class:0x7f5efb458e48>:0x7f5efb322290>):
    1: <% time_tracker = time_tracker_for(User.current) %>
    2: <% if !time_tracker.nil? %>
    3:     <% if time_tracker.paused %>
    4:         <%# A time tracker is in pause, display the tracked issue, the time spent and the resume/stop actions %>
  lib/redmine/hook.rb:110:in `send'
  lib/redmine/hook.rb:110:in `view_layouts_base_body_bottom'
  lib/redmine/hook.rb:61:in `send'
  lib/redmine/hook.rb:61:in `call_hook'
  lib/redmine/hook.rb:61:in `each'
  lib/redmine/hook.rb:61:in `call_hook'
  lib/redmine/hook.rb:58:in `tap'
  lib/redmine/hook.rb:58:in `call_hook'
  lib/redmine/hook.rb:151:in `call_hook'
  app/views/layouts/base.html.erb:80:in `_app_views_layouts_base_html_erb___1317325009_70022959536540'

time_tracker_for El ayudante se coloca en redmine_time_tracker/app/helpers/application_helper.rb y creo que debería cargarse automáticamente de acuerdo con el "Constructor de complementos" en redmine/htdocs/lib/redmine/plugin.rb.

Soy nuevo en Ruby y Rails y necesito algunas instrucciones para continuar luchando contra esta magia.

preguntado el 12 de junio de 12 a las 20:06

2 Respuestas

Finalmente Resuelto.

Encontré aquí: http://www.redmine.org/boards/3/topics/31445 la respuesta (después de leer casi todo lo que encontré sobre complementos en redmine y motores en rails3)

Ampliación de ayudantes y controladores predeterminados

En las versiones de Redmine anteriores a la 2.0.0, todos los complementos estaban en la carpeta de proveedores/complementos y, por eso, Rails cargaba y agregaba automáticamente todos los archivos dentro de las carpetas de aplicaciones/controladores, aplicaciones/ayudantes, aplicaciones/modelos, etc.

Este enfoque permitió ampliar los controladores y ayudantes existentes simplemente agregando archivos y métodos apropiados a las carpetas del complemento. Por ejemplo, si tenemos que agregar el método get_list_of_projects a SettingsHelper, simplemente podemos crear un archivo llamado settings_helper.rb en la carpeta app/helpers del complemento. Redmine 2.x movió los complementos a la carpeta de complementos en la raíz de la aplicación y, debido a ese método descrito anteriormente, no funciona en absoluto. Por lo tanto, tenemos que usar los mecanismos de parcheo y anulación descritos anteriormente para que las cosas funcionen.

En el enlace se explica cómo hacer el mencionado mecanismo de parcheo.

Implementé ese parche para el complemento time_tracker para redmine y está funcionando. El código está en una bifurcación de github. https://github.com/martinllanos/redmine_time_tracker

Espero que ayude. Cualquier duda pregunta aquí :)

Respondido el 27 de junio de 12 a las 15:06

Tengo exactamente el mismo problema, migrando el complemento de seguimiento de tiempo para usarlo en Redmine 2.

He estado buscando en la web y, aunque todavía no pude solucionarlo, encontré información útil que creo que es la forma de resolverlo.

La primera parte es que los complementos de redmine son básicamente motores de Rails http://www.redmine.org/boards/3/topics/13419

así que empecé a googlear sobre eso.

Encontré dos publicaciones en ruby-forum que hablan sobre el problema de anular ApplicationHelper de la aplicación, con ApplicationHelper del complemento. Dan varios métodos para intentar resolver esto, pero todavía no lo he probado (estoy tratando de entender el código)

Aquí están las publicaciones.

http://www.ruby-forum.com/topic/211017

http://www.ruby-forum.com/topic/1455297

Si obtiene una respuesta concreta/clara de allí, sería genial :)

Cualquier noticia de mi lado será publicada.

Respondido el 22 de junio de 12 a las 01:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.