class Kudzu::Adapter::ActiveRecord::Repository
Public Instance Methods
delete(page)
click to toggle source
# File lib/kudzu/adapter/active_record/repository.rb, line 16 def delete(page) page.destroy if page end
find_by_url(url)
click to toggle source
# File lib/kudzu/adapter/active_record/repository.rb, line 5 def find_by_url(url) Page.find_or_initialize_by(url: url) end
register(page)
click to toggle source
# File lib/kudzu/adapter/active_record/repository.rb, line 9 def register(page) ActiveRecord::Base.transaction do page.save save_chunks(page) if page.body end end
Private Instance Methods
each_chunk(body, size) { |chunked, i| ... }
click to toggle source
# File lib/kudzu/adapter/active_record/repository.rb, line 36 def each_chunk(body, size) pos = 0 i = 0 while (chunked = body.byteslice(pos, size)) yield chunked, i pos += size i += 1 end end
save_chunks(page)
click to toggle source
# File lib/kudzu/adapter/active_record/repository.rb, line 22 def save_chunks(page) chunk_num = 0 each_chunk(page.body, ActiveRecord.chunk_size) do |chunked, i| chunk = page.chunks.select_without_data.offset(i).limit(1).first_or_initialize chunk.data = chunked chunk.save chunk_num = i + 1 end if page.chunks.count - chunk_num > 0 page.chunks.select_without_data.offset(chunk_num).each(&:delete) end end