在不打开浏览器的情况下在轨道上运行ruby的功能

问题描述

| 你好 我需要构建一个ruby on rails应用程序,该应用程序将每隔1秒调用一次远程Api URL,以便捕获应该在该远程Web服务器中发生的事件 该网址是   \“ remoteservername.com/folder/folder/waitforevents \” 发生所需事件后,我需要执行一些操作,然后再次调用\“ remoteservername.com/folder/folder/waitforevents \”网址。 这应该是一项连续的任务,并且无需打开浏览器即可完成。这意味着该应用程序应在我的Web服务器启动后立即开始运行。 所以我的问题是如何在不打开浏览器的情况下在Rails应用程序上运行ruby 只是服务器 直到现在,我还具有编写Rails应用程序的经验,该应用程序是在打开浏览器并调用某些URL时启动的。 因此,如果您能在这个问题上指导我,我会很高兴 谢谢     

解决方法

        您可以将ѭ0和ѭ1一起使用,这可以从rails应用程序执行任何方法。 由于您需要每秒执行一些操作,因此可以一次启动
runner
并创建一个循环。您可以从cron启动它,将PID保存在某个地方,然后要求cron终止给定的进程,或者您可以在循环中的Ruby代码中超时。一个简单的例子:
class MyModelOrAnything
  def self.start_loop
    stop_fname = \"./stop_the_loop\"
    while !File.exist? stop_fname 
      do_this_action
      sleep 1
    end
  ensure
    File.unlink stop_fname  if File.exist? stop_fname
  end
end
然后,cron任务可能会在已知目录中创建文件“ stop_the_loop \”,并且您的任务将在一秒钟后停止。 实际上,在这种情况下,可能不需要cron。由于您只应具有此脚本的一个实例,因此最好手动启动它,然后手动停止它。如果要使用cron,则可以添加一个类似信号量的文件,该文件将告诉脚本一个进程已在运行(应使用\'ensure \'块将其删除)。 cron配置的示例:
0 8  * * 1 cd /my/app && bundle exec ./script/rails runner ThisObject.start_loop
0 22 * * 5 touch /my/app/stop_the_loop
..以及带有此\'semaphore \'的示例:
class MyModelOrAnything
  def self.start_loop
    running_fname = \"./i_am_working\"
    return :already_running if File.exist? running_fname
    stop_fname = \"./stop_the_loop\"
    begin
      File.open(running_fname,\'w\') {|f| f.write Time.now.to_s(:db) }
      while !File.exist? stop_fname 
        do_this_action
        sleep 1
      end
    ensure
      File.unlink running_fname if File.exist? running_fname
      File.unlink stop_fname  if File.exist? stop_fname
    end
  end
end
    ,        您确定您需要这种应用程序的滑轨吗?我建议您尝试使用原始的红宝石代码来完成这项工作,更易于维护。正如其他人已经说过的那样,您可以使用cron定期启动应用程序。     ,        一个好的方法是使用延迟的工作: https://github.com/collectiveidea/delayed_job 有关该主题的信息可能会有所帮助: http://railscasts.com/episodes/171-delayed-job     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...