Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 过期日期的Rails侦听器_Ruby On Rails_Ruby_Ruby On Rails 5_Listener - Fatal编程技术网

Ruby on rails 过期日期的Rails侦听器

Ruby on rails 过期日期的Rails侦听器,ruby-on-rails,ruby,ruby-on-rails-5,listener,Ruby On Rails,Ruby,Ruby On Rails 5,Listener,Ruby中是否有监听器之类的东西,或者类似的东西 例如,我如何检查用户日期是否已过期,是否需要在几天前发送电子邮件 感谢您抽出宝贵的时间概括地说,有两种方法可以做到这一点: 定期对即将到期的物品进行调查,并发送相应的电子邮件。例如,您可以使用一个cron作业,该作业按照以下行运行代码: Model.where( 'expiration_date < ? AND expiration_date >= ?', Time.now + 3.days, Time.now ).ea

Ruby中是否有监听器之类的东西,或者类似的东西

例如,我如何检查用户日期是否已过期,是否需要在几天前发送电子邮件



感谢您抽出宝贵的时间

概括地说,有两种方法可以做到这一点:

  • 定期对即将到期的物品进行调查,并发送相应的电子邮件。例如,您可以使用一个cron作业,该作业按照以下行运行代码:

    Model.where(
      'expiration_date < ? AND expiration_date >= ?',
      Time.now + 3.days,
      Time.now
    ).each do |m|
      m.send_reminder_email
    end
    
  • 您所选择的解决方案应根据您的应用程序的具体需求来确定;这个问题没有灵丹妙药的答案

    例如:

    • 您需要对性能考虑多少?使用
      sidekiq
      应该没问题,但是使用频繁的cron作业进行轮询可能会导致问题;为了缓解这种情况,您可以考虑添加数据库索引,或者从从属副本数据库读取数据
    • 您是否担心在完全“随机”的时间发送电子邮件,例如凌晨2点?单独调度的作业可以考虑这一点,但在单个轮询cron作业中实现这一点会更容易。(或者这种行为正是我们所期望的!)
    • 考虑如何最好地记录错误、处理部署、控制重新启动、从崩溃中恢复,等等。。。有很多工具可用于所有这些,但在生产应用程序中正确使用是很重要的

    总的来说,我的建议是:


    如果您是新手,并且/或者只是想快速启动并运行一些功能,请使用上面的选项1。但是,如果你正在构建一个需要在一个大系统中扩展的东西,那么认真考虑如何最好地实现选项2。

    ,大体上说,有两种方式来做到这一点:

  • 定期对即将到期的物品进行调查,并发送相应的电子邮件。例如,您可以使用一个cron作业,该作业按照以下行运行代码:

    Model.where(
      'expiration_date < ? AND expiration_date >= ?',
      Time.now + 3.days,
      Time.now
    ).each do |m|
      m.send_reminder_email
    end
    
  • 您所选择的解决方案应根据您的应用程序的具体需求来确定;这个问题没有灵丹妙药的答案

    例如:

    • 您需要对性能考虑多少?使用
      sidekiq
      应该没问题,但是使用频繁的cron作业进行轮询可能会导致问题;为了缓解这种情况,您可以考虑添加数据库索引,或者从从属副本数据库读取数据
    • 您是否担心在完全“随机”的时间发送电子邮件,例如凌晨2点?单独调度的作业可以考虑这一点,但在单个轮询cron作业中实现这一点会更容易。(或者这种行为正是我们所期望的!)
    • 考虑如何最好地记录错误、处理部署、控制重新启动、从崩溃中恢复,等等。。。有很多工具可用于所有这些,但在生产应用程序中正确使用是很重要的

    总的来说,我的建议是:


    如果您是新手,并且/或者只是想快速启动并运行一些功能,请使用上面的选项1。但是,如果你正在构建一个需要在一个大系统中扩展的东西,那么认真考虑如何最好地实现选项2。< /P>是什么?轨道3还是轨道4?无论如何,你可能在找一份背景工作。有很多关于如何在互联网站上进行的指导。嗨,实际上是rails 5,但是没有rails 5标签?抱歉搞混了。感谢您的建议,我将阅读有关后台作业的内容。请注意,这里有传统的后台作业:您创建一个“worker”,它在专用于异步执行这些任务的服务器上执行,并且您有在特定时间触发的Cron作业。有很多gem允许执行异步任务(比如Sidekiq),也有其他gem执行Cron作业。你可以查看这篇文章,例如:它是哪一个?轨道3还是轨道4?无论如何,你可能在找一份背景工作。有很多关于如何在互联网站上进行的指导。嗨,实际上是rails 5,但是没有rails 5标签?抱歉搞混了。感谢您的建议,我将阅读有关后台作业的内容。请注意,这里有传统的后台作业:您创建一个“worker”,它在专用于异步执行这些任务的服务器上执行,并且您有在特定时间触发的Cron作业。有很多gem允许执行异步任务(比如Sidekiq),也有其他gem执行Cron作业。您可以查看本文,例如: