rakeタスクの作成法

407 views
Skip to first unread message

junki

unread,
Sep 18, 2012, 1:41:24 AM9/18/12
to redmine-...@googlegroups.com
お世話になっております。

既存のredmineのrakeタスクに新しい機能を追加したいと思っています。
rakeタスクを追加するには、apps/lib/tasks/○○.rbのようにファイルを追加し、
cronでrake ○○:●●と実行すればよいと分かっています。

例えば、リマインダメール機能であれば、apps/lib/tasks/redmine.rbの中に
namespace :redmine do
  task :send_reminders => :environment do
  ...
  end
end
のように記述されています。

ここに例えば、task :send_resolvedなどのタスクを作り
その日or前日に完了になった課題のみを送付できるように設定できないかと考えています。

どのように記述すれば実現できますでしょうか?
(RoRに関する知識が追いついていなくてすみません。ActiveRecord等、遡及で学習いたします)
よろしくお願いします。



nobu_toyofuku

unread,
Sep 19, 2012, 12:03:42 PM9/19/12
to redmine-...@googlegroups.com
豊福です。

2012/09/18 junki <arimits...@gmail.com>:
> 例えば、リマインダメール機能であれば、apps/lib/tasks/redmine.rbの中に
> namespace :redmine do
> task :send_reminders => :environment do
...
> ここに例えば、task :send_resolvedなどのタスクを作り
> その日or前日に完了になった課題のみを送付できるように設定できないかと考えています。

send_reminders で送るべきチケットの選択は
app/models/mailer.rb の
def self.reminders の中の

s = ARCondition.new ["#{IssueStatus.table_name}.is_closed = ? AND
#{Issue.table_name}.due_date <= ?", false, days.day.from_now.to_date]

のところでやっているので、ここだけ望みの条件に変更したバージョンの
send_reminders を send_resolved として作ればできると思います。
「その日or前日に完了になった」は「is_closed で updated_on がその日or前日」
でしょうか。完了した後にまた更新されてもマッチしてしまいますが。

オリジナルコードをいじらずにプラグインとして作りたいということであれば
また追加で別の話が。
---
Reply all
Reply to author
Forward
0 new messages