RedmineにKnowledgebaseプラグインを入れている環境で、特定のタグ、カテゴリを選択すると500エラーが発生するようになりました。
応急処置を施したのでメモしておきます。
環境
Redmine version 3.3.0.stable
redmine_knowledgebase 3.2.1
Ruby version 2.3.7-p456 (2018-03-28) [x86_64-linux-gnu]
Rails version 4.2.6
事象
Knowledgebaseプラグインのタグおよびカテゴリをクリックすると、下記エラーメッセージが表示されます。
1 2 3 |
Redmine. Error 500 Global error undefined method `name' for nil:NilClass |
スタックトレースは以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
/var/lib/redmine/plugins/redmine_knowledgebase/app/views/articles/_list_table.html.erb:54:in `block in _plugins_redmine_knowledgebase_app_views_articles__list_table_html_erb__517721594657324074_70301460592720' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activerecord-4.2.6/lib/active_record/relation/delegation.rb:46:in `each' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activerecord-4.2.6/lib/active_record/relation/delegation.rb:46:in `each' /var/lib/redmine/plugins/redmine_knowledgebase/app/views/articles/_list_table.html.erb:22:in `_plugins_redmine_knowledgebase_app_views_articles__list_table_html_erb__517721594657324074_70301460592720' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/template.rb:145:in `block in render' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/notifications.rb:166:in `instrument' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/template.rb:333:in `instrument' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/template.rb:143:in `render' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/renderer/partial_renderer.rb:339:in `render_partial' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/renderer/partial_renderer.rb:310:in `block in render' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/renderer/abstract_renderer.rb:39:in `block in instrument' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/notifications.rb:164:in `block in instrument' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/notifications/instrumenter.rb:20:in `instrument' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/notifications.rb:164:in `instrument' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/renderer/abstract_renderer.rb:39:in `instrument' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/renderer/partial_renderer.rb:309:in `render' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/renderer/renderer.rb:51:in `render_partial' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/renderer/renderer.rb:25:in `render' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/helpers/rendering_helper.rb:32:in `render' /var/lib/redmine/plugins/redmine_knowledgebase/app/views/categories/show.html.erb:62:in `_plugins_redmine_knowledgebase_app_views_categories_show_html_erb__975878575737468764_70301459688520' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/template.rb:145:in `block in render' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/notifications.rb:166:in `instrument' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/template.rb:333:in `instrument' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/template.rb:143:in `render' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/renderer/template_renderer.rb:54:in `block (2 levels) in render_template' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/renderer/abstract_renderer.rb:39:in `block in instrument' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/notifications.rb:164:in `block in instrument' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/notifications/instrumenter.rb:20:in `instrument' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/notifications.rb:164:in `instrument' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/renderer/abstract_renderer.rb:39:in `instrument' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/renderer/template_renderer.rb:53:in `block in render_template' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/renderer/template_renderer.rb:61:in `render_with_layout' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/renderer/template_renderer.rb:52:in `render_template' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/renderer/template_renderer.rb:14:in `render' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/renderer/renderer.rb:46:in `render_template' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/renderer/renderer.rb:27:in `render' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/rendering.rb:100:in `_render_template' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_controller/metal/streaming.rb:217:in `_render_template' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/rendering.rb:83:in `render_to_body' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_controller/metal/rendering.rb:32:in `render_to_body' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_controller/metal/renderers.rb:37:in `render_to_body' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/abstract_controller/rendering.rb:25:in `render' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_controller/metal/rendering.rb:16:in `render' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_controller/metal/instrumentation.rb:44:in `block (2 levels) in render' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/core_ext/benchmark.rb:12:in `block in ms' /usr/share/ruby/2.3/benchmark.rb:308:in `realtime' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/core_ext/benchmark.rb:12:in `ms' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_controller/metal/instrumentation.rb:44:in `block in render' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_controller/metal/instrumentation.rb:87:in `cleanup_view_runtime' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activerecord-4.2.6/lib/active_record/railties/controller_runtime.rb:25:in `cleanup_view_runtime' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_controller/metal/instrumentation.rb:43:in `render' /var/lib/redmine/plugins/redmine_knowledgebase/app/controllers/categories_controller.rb:30:in `block (2 levels) in show' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_controller/metal/mime_responds.rb:217:in `respond_to' /var/lib/redmine/plugins/redmine_knowledgebase/app/controllers/categories_controller.rb:29:in `show' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_controller/metal/implicit_render.rb:4:in `send_action' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/abstract_controller/base.rb:198:in `process_action' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_controller/metal/rendering.rb:10:in `process_action' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/abstract_controller/callbacks.rb:20:in `block in process_action' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/callbacks.rb:117:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/callbacks.rb:555:in `block (2 levels) in compile' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/callbacks.rb:505:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/callbacks.rb:498:in `block (2 levels) in around' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/callbacks.rb:313:in `block (2 levels) in halting' /var/lib/redmine/lib/redmine/sudo_mode.rb:63:in `sudo_mode' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/callbacks.rb:432:in `block in make_lambda' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/callbacks.rb:312:in `block in halting' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/callbacks.rb:497:in `block in around' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/callbacks.rb:505:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/callbacks.rb:92:in `__run_callbacks__' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/callbacks.rb:778:in `_run_process_action_callbacks' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/callbacks.rb:81:in `run_callbacks' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/abstract_controller/callbacks.rb:19:in `process_action' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_controller/metal/rescue.rb:29:in `process_action' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_controller/metal/instrumentation.rb:32:in `block in process_action' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/notifications.rb:164:in `block in instrument' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/notifications/instrumenter.rb:20:in `instrument' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/notifications.rb:164:in `instrument' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_controller/metal/instrumentation.rb:30:in `process_action' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_controller/metal/params_wrapper.rb:250:in `process_action' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activerecord-4.2.6/lib/active_record/railties/controller_runtime.rb:18:in `process_action' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/abstract_controller/base.rb:137:in `process' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionview-4.2.6/lib/action_view/rendering.rb:30:in `process' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_controller/metal.rb:196:in `dispatch' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_controller/metal/rack_delegation.rb:13:in `dispatch' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_controller/metal.rb:237:in `block in action' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_dispatch/routing/route_set.rb:74:in `dispatch' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_dispatch/routing/route_set.rb:43:in `serve' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_dispatch/journey/router.rb:43:in `block in serve' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_dispatch/journey/router.rb:30:in `each' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_dispatch/journey/router.rb:30:in `serve' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_dispatch/routing/route_set.rb:817:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/rack-openid-1.4.2/lib/rack/openid.rb:98:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/request_store-1.0.5/lib/request_store/middleware.rb:9:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/rack-1.6.5/lib/rack/content_length.rb:15:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/rack-1.6.5/lib/rack/etag.rb:24:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/rack-1.6.5/lib/rack/conditionalget.rb:25:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/rack-1.6.5/lib/rack/head.rb:13:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-xml_parser-1.0.2/lib/action_dispatch/xml_params_parser.rb:16:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_dispatch/middleware/params_parser.rb:27:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_dispatch/middleware/flash.rb:260:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/rack-1.6.5/lib/rack/session/abstract/id.rb:225:in `context' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/rack-1.6.5/lib/rack/session/abstract/id.rb:220:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_dispatch/middleware/cookies.rb:560:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activerecord-4.2.6/lib/active_record/query_cache.rb:36:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activerecord-4.2.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:653:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_dispatch/middleware/callbacks.rb:29:in `block in call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/callbacks.rb:88:in `__run_callbacks__' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/callbacks.rb:778:in `_run_call_callbacks' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/callbacks.rb:81:in `run_callbacks' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_dispatch/middleware/callbacks.rb:27:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_dispatch/middleware/remote_ip.rb:78:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_dispatch/middleware/show_exceptions.rb:30:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/railties-4.2.6/lib/rails/rack/logger.rb:38:in `call_app' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/railties-4.2.6/lib/rails/rack/logger.rb:20:in `block in call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/tagged_logging.rb:68:in `block in tagged' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/tagged_logging.rb:26:in `tagged' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/tagged_logging.rb:68:in `tagged' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/railties-4.2.6/lib/rails/rack/logger.rb:20:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_dispatch/middleware/request_id.rb:21:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/rack-1.6.5/lib/rack/methodoverride.rb:22:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/rack-1.6.5/lib/rack/runtime.rb:18:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/activesupport-4.2.6/lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/actionpack-4.2.6/lib/action_dispatch/middleware/static.rb:120:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/rack-1.6.5/lib/rack/sendfile.rb:113:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/railties-4.2.6/lib/rails/engine.rb:518:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/railties-4.2.6/lib/rails/application.rb:165:in `call' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/railties-4.2.6/lib/rails/railtie.rb:194:in `public_send' /var/lib/redmine/vendor/bundle/ruby/2.3/gems/railties-4.2.6/lib/rails/railtie.rb:194:in `method_missing' /usr/local/share/ruby/gems/2.3/gems/passenger-5.1.2/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb:97:in `process_request' /usr/local/share/ruby/gems/2.3/gems/passenger-5.1.2/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb:152:in `accept_and_process_next_request' /usr/local/share/ruby/gems/2.3/gems/passenger-5.1.2/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb:113:in `main_loop' /usr/local/share/ruby/gems/2.3/gems/passenger-5.1.2/src/ruby_supportlib/phusion_passenger/request_handler.rb:416:in `block (3 levels) in start_threads' /usr/local/share/ruby/gems/2.3/gems/passenger-5.1.2/src/ruby_supportlib/phusion_passenger/utils.rb:113:in `block in create_thread_and_abort_on_exception' |
原因
エラーが発生しているタグ、カテゴリを整理してみると、最近削除したユーザーが作成したタグ、カテゴリで同エラーが発生しているようでした。
スタックトレースの冒頭にある以下のメッセージから、Knowledgebaseプラグイン、_list_table.html.erbの54行目で問題が起きているようです。
/var/lib/redmine/plugins/redmine_knowledgebase/app/views/articles/_list_table.html.erb:54
該当箇所を確認すると、記事のAuthor=更新者を表示しているところでした。
試しに新規ユーザーで新規カテゴリとタグを作成して、そのユーザーを削除すると再現しました。
応急対応
きちんと対応するならIssuesで報告して、更新ユーザーが削除済みの場合は回避するコードを組み込むべきですが、既存Issuesにないか確認するのが一苦労であることと、筆者がRuby(RoR?)はよく分からないことから、Authorが表示されないよう該当箇所を削除することにしました。
具体的には_list_table.html.erbの16行目と52行から59行目を削除します。
ハイライト部分が削除箇所です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
<div class="autoscroll"> <table class="list"> <thead> <tr> <% if redmine_knowledgebase_settings_value(:show_thumbnails_for_articles) %> <th><%= "Thumbnail" %></th> <% end %> <th><%= sortable "title" %></th> <% if not @category and redmine_knowledgebase_settings_value(:show_breadcrumbs_for_article_lists) %> <th><%= "Category" %></th> <% end %> <th><%= "Rating" %></th> <% unless @author_id %><th><%= sortable "author_id", "Author" %></th><% end %> <th><%= sortable "created_at", "Created" %></th> <th><%= sortable "updated_at", "Updated" %></th> </tr> </thead> <tbody> <% articles.each do |article| %> <tr id="article-<%= article %>" class="<%= cycle('odd', 'even') %>"> <% if redmine_knowledgebase_settings_value(:show_thumbnails_for_articles) %> <td class="thumbnail"> <%= render :partial => "articles/thumbnail", :locals => { :article => article, :imgclass => 'thumbnail-table', :project_id => @project } %> </td> <% end %> <td class="title"> <%= link_to article.title, { :controller => 'articles', :action => 'show', :id => article.id, :project_id => @project} %> <% unless redmine_knowledgebase_settings_value(:disable_article_summaries) %> <br/> <div class="summary"> <%= article.summary %> </div> <% end %> </td> <% if not @category and redmine_knowledgebase_settings_value(:show_breadcrumbs_for_article_lists) %> <td class="category"> <%= render :partial => "articles/breadcrumb", :locals => { :article => article, :project => @project } %> </td> <% end %> <td class="rating"><% rating = article.rating_average.to_i %><%= rating != 0 ? "#{rating} / 5" : "-" %></td> <% unless @author_id %> <td class="author"> <%= link_to article.author.name, { :controller => 'articles', :action => 'authored', :author_id => article.author.id, :project_id => @project} %> </td> <% end %> <td class="created_at"><%= time_ago_in_words article.created_at %> ago</td> <td class="updated_at"><%= time_ago_in_words article.updated_at %> ago</td> </tr> <% end %> </tbody> </table> </div> |
以下手順で実施
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# cd /var/lib/redmine/plugins/redmine_knowledgebase/app/views/articles # cp -pi _list_table.html.erb _list_table.html.erb.bak # diff _list_table.html.erb _list_table.html.erb.bak # vi _list_table.html.erb # diff _list_table.html.erb _list_table.html.erb.bak 15a16 <% unless @author_id ><th><%= sortable "author_id", "Author" %></th>< end %> 50a52,59 <% unless @author_id > <td class="author"> <%= link_to article.author.name, { :controller => 'articles', :action => 'authored', :author_id => article.author.id, :project_id => @project} %> </td> < end %> # # service httpd restart |
恒久対応
できればIssuesで報告してアップデートしてもらおうと思います。こちらからコードを提示できればなお良し。
Knowledgebaseプラグイン以外でも、ユーザーを削除すると更新者が表示されなくなるなど不都合があるようなので、不要になったユーザーは削除せずにロックしたほうがよさそうです。
最後までご覧いただきありがとうございました。よろしければ広告もご覧ください。