#ruby-on-rails #heroku #sidekiq #rake-task
#ruby-on-rails #heroku #sidekiq #задача рейка
Вопрос:
Мне нужно один раз заполнить Heroku
базу данных исходными данными, полученными с внешнего веб-сайта Nokogiri
. После начальной задачи заполнения база данных будет обновляться периодическими заданиями с sidekiq
sidekiq-cron
.
Можно ли использовать задачу rake в среде удаленного приложения для загрузки базы данных?
Моя задача rake будет извлекать имена и другие атрибуты с внешнего веб-сайта и записывать их в базу данных, как в примере ниже:
lib/tasks/feed.rake
desc "Fetch data and feed the database"
task :feed_database => :environment do
require 'nokogiri'
require 'open-uri'
range = (1..100)
url = "http://www.example.com"
doc = Nokogiri::HTML(open(url))
range.each do |num|
name = doc.at_css("tr:nth-child(#{num})).text
Model.create(name: name)
end
end
С моей удаленной консоли я бы использовал следующую команду:
$ heroku run rake feed_database
или следующие команды:
$ heroku run console
$ rake feed_database
Однако существует мало документации Heroku
о задачах rake, и кажется, что нет хорошо объясненных ограничений на использование команд rake.
Комментарии:
1. Вы можете это сделать. У вас возникли какие-либо конкретные проблемы?
2. Я все еще разрабатываю свое приложение, мне нужно время перед развертыванием. Я хотел быть уверен, когда придет время, что я не делаю неправильно.