Rails Anemone и Postgres хранят только URL
Я хочу сохранить URL on_pages_like
определенный матч. Анемон делает свое дело, и создаются записи, которые хранят URL-адреса, но:
- Я хочу использовать что-то вроде
find_or_create_by_url
вместоcreate!
так что я не дублирую записи каждый раз. Я хочу сохранить URL. В настоящее время URL сохраняется в БД, например:
---! ruby /object:URI:: Схема HTTP: http пользователь: пароль: хост: www.a4apps.com порт: 80 путь: /Websites/SampleCalendar/tabid/89/Default.aspx запрос: непрозрачный: реестр: фрагмент: parser:
Я хочу это так:
http://www.a4apps.com//Websites/SampleCalendar/tabid/89/Default.aspx
Причина, по которой я сохраняю таблицу Postgres, заключается в том, что я хочу, чтобы другая задача позже модифицировала эту таблицу, используя URL-адрес каждой записи, и я в некотором роде новичок в этом и был немного ошеломлен мыслью о добавлении второй БД предложено на сайте анемона.
За последние несколько дней я пытался настроить основной код, но пока не нашел решения.
Это моя задача Rake:
namespace :db do
desc "Fetch a4apps urls"
task :fetch_a4apps => :environment do
require 'anemone'
Anemone.crawl("http://www.a4apps.com/") do |anemone|
anemone.on_pages_like(/\/SampleCalendar\/[^?]*$/) do |page|
Calendarparts.create!(:url => page.url)
end
end
end
end
Мое представление не делает ничего, кроме вывода данных на веб-страницу:
<% @calendar.each do |part| %>
<tr valign="top">...
<td><%= part.url %> </td>...
</tr>
<% end %>
Мой контроллер:
class CalendarController < ApplicationController
def cainventory
@calendar = Calendarparts.all
end
end
1 ответ
Хорошо, так что я думаю, что я понял это. Не знаю, является ли это идеальным / правильным способом, но я вытаскиваю часть пути из URL и добавляю исходный домен к его началу.
namespace :db do
desc "Fetch a4apps urls"
task :fetch_a4apps => :environment do
require 'anemone'
website = 'http://www.a4apps.com'
Anemone.crawl(website) do |anemone|
anemone.on_pages_like(/\/SampleCalendar\/[^?]*$/) do |page|
Calendarparts.find_or_create_by_url(:url => website + page.url.path)
end
end
end
end