プロジェクト

全般

プロフィール

Vote #79538

未完了

Rake task to export wiki to HTML/PDF

Admin Redmine さんが約4年前に追加. 約4年前に更新.

ステータス:
New
優先度:
通常
担当者:
-
カテゴリ:
Wiki_1
対象バージョン:
-
開始日:
2022/05/09
期日:
進捗率:

0%

予定工数:
category_id:
1
version_id:
0
issue_org_id:
29649
author_id:
363497
assigned_to_id:
0
comments:
3
status_id:
1
tracker_id:
3
plus1:
0
affected_version:
closed_on:
affected_version_id:
ステータス-->[New]

説明

As a system administrator I want to automatically export and archive a wiki on a regular basis such that critical information is still accessible to my team if redmine goes down.

The attached patch adds two rake tasks @redmine:wikidump:html@ and @redmine:wikidump:pdf@ which can be called from a cron job / systemd timer.


journals

--------------------------------------------------------------------------------
I've just tested it and had to fix the following error:

<pre>
# rake redmine:wikidump:html project=lbcfree RAILS_ENV="production"
rake aborted!
ActionView::Template::Error: In order to use #url_for, you must include routing helpers explicitly. For instance, `include Rails.application.routes.url_helpers`.
/var/lib/gems/2.3.0/gems/actionpack-4.2.8/lib/abstract_controller/url_for.rb:13:in `_routes'
/var/lib/gems/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/routing/url_for.rb:175:in `optimize_routes_generation?'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/routing_url_for.rb:131:in `optimize_routes_generation?'
/var/lib/gems/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/routing/route_set.rb:241:in `optimize_routes_generation?'
/var/lib/gems/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/routing/route_set.rb:218:in `call'
/var/lib/gems/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/routing/route_set.rb:345:in `block (2 levels) in define_url_helper'
/opt/redmine-3.4/app/helpers/application_helper.rb:56:in `link_to_user'
/opt/redmine-3.4/app/helpers/application_helper.rb:988:in `block in parse_redmine_links'
/opt/redmine-3.4/app/helpers/application_helper.rb:845:in `gsub!'
/opt/redmine-3.4/app/helpers/application_helper.rb:845:in `parse_redmine_links'
/opt/redmine-3.4/app/helpers/application_helper.rb:666:in `block (2 levels) in textilizable'
/opt/redmine-3.4/app/helpers/application_helper.rb:665:in `each'
/opt/redmine-3.4/app/helpers/application_helper.rb:665:in `block in textilizable'
/opt/redmine-3.4/app/helpers/application_helper.rb:686:in `parse_non_pre_blocks'
/opt/redmine-3.4/app/helpers/application_helper.rb:664:in `textilizable'
/opt/redmine-3.4/app/views/wiki/export_multiple.html.erb:30:in `block in _app_views_wiki_export_multiple_html_erb__625170301977414803_47188578157680'
/opt/redmine-3.4/app/views/wiki/export_multiple.html.erb:27:in `each'
/opt/redmine-3.4/app/views/wiki/export_multiple.html.erb:27:in `_app_views_wiki_export_multiple_html_erb__625170301977414803_47188578157680'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/template.rb:145:in `block in render'
/var/lib/gems/2.3.0/gems/activesupport-4.2.8/lib/active_support/notifications.rb:166:in `instrument'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/template.rb:333:in `instrument'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/template.rb:143:in `render'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/renderer/template_renderer.rb:54:in `block (2 levels) in render_template'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/renderer/abstract_renderer.rb:39:in `block in instrument'
/var/lib/gems/2.3.0/gems/activesupport-4.2.8/lib/active_support/notifications.rb:164:in `block in instrument'
/var/lib/gems/2.3.0/gems/activesupport-4.2.8/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/var/lib/gems/2.3.0/gems/activesupport-4.2.8/lib/active_support/notifications.rb:164:in `instrument'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/renderer/abstract_renderer.rb:39:in `instrument'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/renderer/template_renderer.rb:53:in `block in render_template'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/renderer/template_renderer.rb:61:in `render_with_layout'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/renderer/template_renderer.rb:52:in `render_template'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/renderer/template_renderer.rb:14:in `render'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/renderer/renderer.rb:46:in `render_template'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/renderer/renderer.rb:27:in `render'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/helpers/rendering_helper.rb:32:in `render'
/opt/redmine-3.4/lib/tasks/wikidump.rake:44:in `block in export_wiki'
/opt/redmine-3.4/lib/tasks/wikidump.rake:43:in `open'
/opt/redmine-3.4/lib/tasks/wikidump.rake:43:in `export_wiki'
/opt/redmine-3.4/lib/tasks/wikidump.rake:81:in `block (3 levels) in <top (required)>'
/var/lib/gems/2.3.0/gems/rake-12.3.1/exe/rake:27:in `<top (required)>'
In order to use #url_for, you must include routing helpers explicitly. For instance, `include Rails.application.routes.url_helpers`.
/var/lib/gems/2.3.0/gems/actionpack-4.2.8/lib/abstract_controller/url_for.rb:13:in `_routes'
/var/lib/gems/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/routing/url_for.rb:175:in `optimize_routes_generation?'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/routing_url_for.rb:131:in `optimize_routes_generation?'
/var/lib/gems/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/routing/route_set.rb:241:in `optimize_routes_generation?'
/var/lib/gems/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/routing/route_set.rb:218:in `call'
/var/lib/gems/2.3.0/gems/actionpack-4.2.8/lib/action_dispatch/routing/route_set.rb:345:in `block (2 levels) in define_url_helper'
/opt/redmine-3.4/app/helpers/application_helper.rb:56:in `link_to_user'
/opt/redmine-3.4/app/helpers/application_helper.rb:988:in `block in parse_redmine_links'
/opt/redmine-3.4/app/helpers/application_helper.rb:845:in `gsub!'
/opt/redmine-3.4/app/helpers/application_helper.rb:845:in `parse_redmine_links'
/opt/redmine-3.4/app/helpers/application_helper.rb:666:in `block (2 levels) in textilizable'
/opt/redmine-3.4/app/helpers/application_helper.rb:665:in `each'
/opt/redmine-3.4/app/helpers/application_helper.rb:665:in `block in textilizable'
/opt/redmine-3.4/app/helpers/application_helper.rb:686:in `parse_non_pre_blocks'
/opt/redmine-3.4/app/helpers/application_helper.rb:664:in `textilizable'
/opt/redmine-3.4/app/views/wiki/export_multiple.html.erb:30:in `block in _app_views_wiki_export_multiple_html_erb__625170301977414803_47188578157680'
/opt/redmine-3.4/app/views/wiki/export_multiple.html.erb:27:in `each'
/opt/redmine-3.4/app/views/wiki/export_multiple.html.erb:27:in `_app_views_wiki_export_multiple_html_erb__625170301977414803_47188578157680'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/template.rb:145:in `block in render'
/var/lib/gems/2.3.0/gems/activesupport-4.2.8/lib/active_support/notifications.rb:166:in `instrument'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/template.rb:333:in `instrument'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/template.rb:143:in `render'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/renderer/template_renderer.rb:54:in `block (2 levels) in render_template'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/renderer/abstract_renderer.rb:39:in `block in instrument'
/var/lib/gems/2.3.0/gems/activesupport-4.2.8/lib/active_support/notifications.rb:164:in `block in instrument'
/var/lib/gems/2.3.0/gems/activesupport-4.2.8/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/var/lib/gems/2.3.0/gems/activesupport-4.2.8/lib/active_support/notifications.rb:164:in `instrument'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/renderer/abstract_renderer.rb:39:in `instrument'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/renderer/template_renderer.rb:53:in `block in render_template'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/renderer/template_renderer.rb:61:in `render_with_layout'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/renderer/template_renderer.rb:52:in `render_template'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/renderer/template_renderer.rb:14:in `render'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/renderer/renderer.rb:46:in `render_template'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/renderer/renderer.rb:27:in `render'
/var/lib/gems/2.3.0/gems/actionview-4.2.8/lib/action_view/helpers/rendering_helper.rb:32:in `render'
/opt/redmine-3.4/lib/tasks/wikidump.rake:44:in `block in export_wiki'
/opt/redmine-3.4/lib/tasks/wikidump.rake:43:in `open'
/opt/redmine-3.4/lib/tasks/wikidump.rake:43:in `export_wiki'
/opt/redmine-3.4/lib/tasks/wikidump.rake:81:in `block (3 levels) in <top (required)>'
/var/lib/gems/2.3.0/gems/rake-12.3.1/exe/rake:27:in `<top (required)>'
Tasks: TOP => redmine:wikidump:html
(See full trace by running task with --trace)
</pre>

by adding the following line as recommended in the error:

<pre>
...
18 namespace :redmine do
19 namespace :wikidump do
20 ++ include Rails.application.routes.url_helpers
21 def export_wiki(project, template, path)
22 pages = project.wiki.pages.
...
</pre>

Then it worked.

--------------------------------------------------------------------------------
For Redmine >= 4.2 no modification needed and the original solution works well.
--------------------------------------------------------------------------------

他の形式にエクスポート: Atom PDF

いいね!0
いいね!0