每小时从Rails应用运行rb文件的选项

时间:2019-05-03 20:26:18

标签: ruby-on-rails

我想拥有一个.rb文件,其中包含所有与scraper / bot相关的代码,然后我想知道将其放置在我的rails应用程序中的位置,以便某些Rails服务激活它并使用输出创建数据库记录

我有一个刮板,它只是放在craigslist上并提取与我的参数匹配的数据。在我的机器上,我只有一个cron选项卡作业,它将根据我指定的时间执行.rb文件。

我想做的是触发我的机器人到世界各地,然后在我的rails应用程序中创建一条记录,以便当用户来访问我的页面时。

他们可以浏览我的机器人所做的记录。所以我想我希望我的机器人为我提供RESTful资源。我该怎么办?

我考虑过只制作我的应用程序,然后在机器上维护机器人,然后将HTTP请求发送到将在VPS上的我的rails应用程序中,但是我觉得可能有一种更红宝石的方式它。

我听说过服务对象一词。...

2 个答案:

答案 0 :(得分:0)

很遗憾,我只能从理论上回答您的问题,因为它缺少一些示例代码以及有关您想要实现什么以及如何实现的详细信息。

服务对象是纯红宝石对象,位于例如在/ lib文件夹中

This page包含一个示例:

class RegisterUser
  def initialize(user)
    @user = user
  end
  def execute
    return nil unless @user.save
    send_welcome_email
    notify_slack
    if @user.admin?
      log_new_admin
    else
      log_new_user
    end
    @user
  end
  # private methods
end

上面的服务对象将用于为新用户或现有用户创建记录。

来自外部的请求可能是对应用程序中一个宁静的API的API调用,该API接收来自外部的发布请求以生成或修改数据库中的数据。

除如何构建API外,还有许多教程,例如Tutorial 1Tutorial 2

答案 1 :(得分:0)

我认为积极的工作将是最好的选择。您可以在rails> app> services中添加所有.rb文件,并创建一个活动作业来执行该任务。活动作业用于在后台运行任何事物。您可以使用sidekiq / rabbitmq进行计划,并将其轻松地与活动作业集成。