0

我对在 Windows 上工作的 RoR 比较陌生。我在 Rails 中构建了一个使用 ActionMailer 发送电子邮件的简单应用程序。我想向我的 Windows 调度程序添加一个任务,以运行一个批处理例程,该例程在我的控制器内部调用我的电子邮件方法。当我这样做时,网络应用程序将不会运行,所以我不能做 CURL 或类似的事情。有没有办法运行带有一些参数的 Ruby.exe 来启动 Rails 应用程序(类似于 irb)并调用控制器:方法?

更新:我在我标记为正确的答案中采纳了建议,但我想我会详细说明,以防像我这样的 RoR 新手需要更多指导。

  1. 我创建了一个文件夹 app\classes 并为我的班级创建了一个 .rb 文件
  2. 我必须创建一个初始化方法来处理一些设置
  3. 创建了一些简单的返回变量的方法
  4. 我确保我可以在rails 控制台中运行这些步骤
  5. 使用下面的代码在 lib\tasks 中创建了一个文件
  6. 在项目文件夹中的 DOS 中运行它 - rake runMe --trace

    task :runMe => :environment do
    
        @s = ScrapeTools.new
    
        @bears = @s.getBears
    
        @bulls = @s.getBulls
    
        UserMailer.stock_email(@bears,@bulls).deliver
    
    end
    

如果您发现任何错误,请告诉我

4

2 回答 2

1

有。rails runner <path to script>将在您的 Rails 应用程序下运行给定的脚本。有一些文档

于 2013-02-18T17:08:59.710 回答
-1

这是一个很好的例子,说明了为什么您不想将逻辑放入控制器中。比将该功能放在控制器方法中要好得多,将其重构为模块或类中的方法。然后,您从控制器以及直接在批处理例程中执行的 rake 任务调用该方法。

于 2013-02-18T17:09:27.567 回答