Rails 2,redmine 1.1.1,gem每当,如何从插件执行代码

时间:2013-12-17 16:21:57

标签: ruby-on-rails ruby ruby-on-rails-2 whenever redmine-plugins

每当v0.8.4使用gem时都会遇到问题。 config/schedule.rb看起来像这样:

every :day, :at => '8am' do
  runner "TimeclockReportSender.sendReports"
end

问题是TimeclockReportSender.sendReports代码没有执行。该文件位于/vendor/plugins/plugin_name/lib/reports/timeclock_report.rb

我正在使用redmine 1.1.1在rails 2.3.5项目中开发。任何人都知道我如何指定何时执行插件模块代码或者如果我必须将这段代码放在别处。

更新

module TimeclockReportSender
    require "reports/timeclock_report.rb"
    #verify and send every report that has date_to_send == today
    def self.sendReports
        reports = CtTimeclockReport.find(:all)
        reports.each do |rpt|
            if !rpt.date_to_send.nil?
                if rpt.date_to_send.to_date() == Date.today
                    users = CtTimeclockReport.getAllUsersFromReport(rpt)
                    period = CtSettingsPeriod.getPeriod(rpt.ct_settings_period_id)
                    project = Project.find(period.project_id)
                    pdf = TimeclockReport.createAndGetReport(rpt,project)
                    sent = TimeclockReportSender.sendReport(rpt,pdf,users)
                    TimeclockReportSender.updateReportDate(rpt)
                end
            end
        end
    end

#send a single report pdf via email to the users list
def self.sendReport(report,pdfReport,users)
    #send the report to each user
    users.each do |usr|
        usr = User.find(usr.user_id)
        if !usr.nil?
            CtMailer.deliver_reportEmail(report,pdfReport,usr)
        end
    end
    return true
end

当我运行命令时: script/runner -e production '\''TimeclockReportSender.sendReports'\'''在rails root,它会询问s me some input ... this command it每当

生成的crontab

UPDATE2

要运行sendReports方法,我必须使用我的控制器中的文件 require "reports/timeclock_report_sender.rb"

固定

我从cron运行了cmd,发现rails没有找到我的模块。解决方案是将代码放入我的插件中的模型中,而不是找到他的代码。谢谢4人:D

1 个答案:

答案 0 :(得分:0)

问题解决了!我发现它没有通过从cron运行cmd执行的原因然后我发现rails没有找到我的模块。

解决方案是将代码放入我的插件中的模型中,而不是cron找到他的代码。谢谢你的帮助。