2

我正在尝试在 Bitnami Stack 上使用 Redmine 2.0.1运行Time Tracker 插件。我发现它与 Redmine 2.* 不兼容,但它无法阻止我。所以,我把这个插件放在 中../redmine/htdocs/plugins/redmine_time_tracker,用 迁移它rake db:migrate_plugins RAILS_ENV=production,将路由更改为 Rails 3 样式,redmine_time_tracker/config/routes.rb并将所有文件redmine_time_tracker/app/views从 *.rhtml 重命名为 *.html.erb。在另一个Redmine重新启动后,我靠在墙上。Redmine的production.log中有一条错误消息:

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_forhelper 放在redmine_time_tracker/app/helpers/application_helper.rb里面,我认为应该根据redmine/htdocs/lib/redmine/plugin.rb.

我是 Ruby 和 Rails 的新手,需要一些指导来继续对抗这种魔力。

4

2 回答 2

3

终于解决了。

我在这里找到了:http ://www.redmine.org/boards/3/topics/31445 答案(在阅读了我发现的关于 redmine 插件和 rails3 引擎的几乎所有内容之后)

扩展默认助手和控制器

在 Redmine 2.0.0 之前的版本中,所有插件都在 vendor/plugins 文件夹中,因此 Rails 自动加载并添加了 app/controllers、app/helpers、app/models 等文件夹中的所有文件。

这种方法允许通过简单地将适当的文件和方法添加到插件的文件夹来扩展现有的控制器和助手。例如,如果我们必须将方法 get_list_of_projects 添加到 SettingsHelper,我们可以简单地在插件的 app/helpers 文件夹中创建名为 settings_helper.rb 的文件。Redmine 2.x 将插件移动到应用程序根目录中的插件文件夹,并且由于上述方法根本不起作用。所以我们必须使用上面描述的修补和覆盖机制来使事情正常工作。

在链接中解释了如何制作提到的补丁机制。

我为 redmine 的 time_tracker 插件实现了该补丁并且正在工作。代码位于 github fork https://github.com/martinllanos/redmine_time_tracker

我希望它有所帮助。有任何问题在这里问:)

于 2012-06-27T14:25:53.140 回答
1

我有完全相同的问题,迁移要在 Redmine 2 上使用的时间跟踪器插件。

我一直在网上搜索,虽然我仍然无法修复它,但我发现了一些有用的信息,我认为这是解决这个问题的方法。

第一部分是 redmine 插件基本上是 Rails 引擎 http://www.redmine.org/boards/3/topics/13419

所以我开始在谷歌上搜索。

我在 ruby​​-forum 上发现了两篇文章,它们讨论了使用插件中的 ApplicationHelper 从应用程序中覆盖 ApplicationHelper 的问题。他们提供了几种方法来解决这个问题,但我还没有测试它(我试图理解代码)

这是帖子。

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

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

如果您从那里得到具体/明确的答案,那就太好了:)

我这边的任何消息都会发布。

于 2012-06-21T20:31:52.400 回答