варианты запуска файла rb каждый час из приложения rails - PullRequest
0 голосов
/ 03 мая 2019

Я хочу иметь файл .rb, который содержит весь мой код, относящийся к scrapper / bot, а затем я хочу знать, где поместить его в мое приложение rails, чтобы какой-то сервис rails активировал его и создал запись db с выводом .

У меня есть созданный мной скрепер, который просто заходит на craigslist и извлекает данные, которые соответствуют моим параметрам. На моей машине у меня было только задание cron, которое выполняло бы файл .rb в соответствии с указанным временем.

То, что я хочу сделать, это запустить моего бота в мир, а затем создать запись в моем приложении rails, чтобы, когда пользователь заходит на мою страницу.

Они могут просматривать записи, сделанные моим ботом. Поэтому я хочу, чтобы мой бот делал для меня ресурсы RESTful. Как мне это сделать?

Я подумал о том, чтобы просто создать свое приложение, а затем поддерживать бота на моей машине, а затем просто отправить запрос http в мое приложение rails, которое будет работать на VPS, но я чувствую, что может быть более рубиновый способ сделать это. Это.

Я немного слышал термин "объект обслуживания" ...

Ответы [ 2 ]

0 голосов
/ 04 мая 2019

Я думаю, что Активные рабочие места были бы лучшими для этого.Вы можете добавить все .rb файлы в rails> app> services и создать активное задание для выполнения этой задачи.активные задания используются для запуска любой вещи в фоновом режиме.вы можете использовать sidekiq / rabbitmq для составления расписания и легко интегрировать его с активными заданиями.

0 голосов
/ 03 мая 2019

К сожалению, я могу просто ответить на ваш вопрос очень теоретически, так как ему не хватает некоторого примера кода и деталей о том, что и как вы хотите достичь.

Сервисные объекты - это чисто рубиновые объекты, которые расположены, например, в папке / lib

Эта страница содержит пример:

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, например, Учебник 1 и Учебник 2 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...