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