class BookmarkMigrator

Attributes

errors[R]

Public Class Methods

new(options={}) click to toggle source
# File lib/migration/bookmark_migrator.rb, line 5
def initialize(options={})
  @verbose = options[:verbose]
  @logging = options[:logging]
  @errors = []
  @default_folder_name = I18n.translate(:'blacklight.folders.default_folder_name')
end

Public Instance Methods

default_folder(user) click to toggle source
# File lib/migration/bookmark_migrator.rb, line 35
def default_folder(user)
  folder = user.folders.where(name: @default_folder_name).first
  folder ||= user.create_default_folder
end
log_message(message) click to toggle source
# File lib/migration/bookmark_migrator.rb, line 40
def log_message(message)
  puts message if @verbose
  Rails.logger.info "#{self.class}: #{message}" if @logging
end
migrate() click to toggle source
# File lib/migration/bookmark_migrator.rb, line 12
def migrate
  raise 'Default folder name is not defined' if @default_folder_name.match(/translation missing/)
  @errors = []
  log_message 'Begin migration of existing bookmarks.'

  User.where(guest: false).find_each do |user|
    folder = default_folder(user)
    bookmarks_to_add = user.bookmarks - folder.bookmarks
    bookmarks_to_add.map do |b|
      folder.items.build(bookmark: b)
    end

    unless folder.save
      msg = "Unable to save bookmarks to folder: #{folder.id}"
      log_message "ERROR: #{msg}"
      @errors << msg
    end
  end

  log_message "Migration complete with #{@errors.count} errors."
  @errors.empty?
end