Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

標準のRakeタスクを別ファイルに移動する #921

Closed
kauplan opened this issue Jan 13, 2018 · 1 comment
Closed

標準のRakeタスクを別ファイルに移動する #921

kauplan opened this issue Jan 13, 2018 · 1 comment

Comments

@kauplan
Copy link

kauplan commented Jan 13, 2018

やりたいこと

独自のRakeタスクを追加したい。

問題点

ユーザが独自のタスクをRakefileに追加すると、Re:VIEWが標準で提供するタスクと、ユーザ独自タスクが、ひとつのRakefileに混在してしまう。
そのため、Re:VIEWのバージョンアップがしにくくなる。
(現在のRe:VIEWは、バージョンアップ時のことをあまり考慮してないように見受けられる。)

提案

Rakefileの中身を、たとえばrakelib/reviewtasks.rbに移動する。
そしてRakefileを以下のようにする。

# -*- coding: utf-8 -*-

require './rakelib/reviewtasks'

task default: :html_all

または:

# -*- coding: utf-8 -*-

BOOK = 'book'
BOOK_PDF = BOOK + '.pdf'
BOOK_EPUB = BOOK + '.epub'
CONFIG_FILE = 'config.yml'
WEBROOT = 'webroot'

require './rakelib/reviewtasks'

task default: :html_all

効果

ユーザが独自のRakeタスクを追加したい場合、たとえばrakelib/mytasks.rbを作成してその中に定義し、Rakefileにrequire 'rakelib/mytasks'と記述すればよい。
これで、Re:VIEWが標準で提供するRakeタスクと、ユーザが追加した独自Rakeタスクとが、別ファイルに分離できるため、Re:VIEWのバージョンアップがしやすくなる。

環境

  • Re:VIEW 2.4

参考事例

たとえばRuby on Railsだと、標準のRakefileは次のようになっており、Railsが提供する標準のタスクは分離されている。

# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.

require_relative 'config/application'

Rails.application.load_tasks

またコメントにあるように、ユーザがRakeタスクを追加する場合は、たとえばlib/tasks/mytasks.rakeのように別ファイルに分離するよう推奨されている。

Re:VIEWもこのような考慮をしていただけるとありがたい。

@kdmsnr
Copy link
Collaborator

kdmsnr commented Jan 14, 2018

確かに。ということで lib/tasks/*.rake を参照するようにしてみました。 #923

@kdmsnr kdmsnr closed this as completed in 8aebf0c Jan 16, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants