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

如何解决在不打开浏览器的情况下在轨道上运行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     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?