Я работаю над приложением rails, где я получаю rss-канал от BBC для новостей. Затем я сохраняю заголовок, сводку и URL новостной ленты из rss-канала. Сначала есть пустой столбец для изображений в моем db, потому что я посещаю URL-адрес истории и использую nokogiri, чтобы очистить URL-адрес основного изображения после этой задачи. Как только у меня есть url для изображения, я пытаюсь сохранить элемент с обновленным атрибутом в моей базе данных. Однако всякий раз, когда я запускаю свою задачу рейка, она не работает, и я получаю ошибки. Вот код:Ruby on Rails и Nokogiri: как обновить атрибут в базе данных, используя команду rake
task :getimg => :environment do
stories = FeedEntry.all
stories.each do |story|
url = story.url
doc = Nokogiri::HTML(open(url))
if doc.at_css(".full-width img")
img = doc.at_css(".full-width img")[:src]
story.image = img #my attempt to update the story's attribute
story.save! #does this save work?
elsif doc.at_css(".body-width img")
img = doc.at_css(".body-width img")[:src]
story.image = img # my attempt to update the story's attribute
story.save! #does this save work?
end
end
end
FeedEntry моя модель для новостных сюжетов и вот вывод в консоли:
rake getimg --trace
** Invoke getimg (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute getimg
rake aborted!
Errno::ENOENT: No such file or directory @ rb_sysopen - http://www.bbc.co.uk/news/world-africa-29184590#sa-ns_mchannel=rss&ns_source=PublicRSS20-sa
/Users/abhasarya/rails_projects/news_reader/lib/tasks/image_scraper.rake:9:in `initialize'
Я знаю, что я делаю что-то неправильно, и я бы очень признателен, если любой может указать мне на решение. Благодаря!
Я люблю тебя, спасибо! Теперь он отлично работает! –