Skip to content

Instantly share code, notes, and snippets.

@nigelramsay
nigelramsay / option3.rb
Created March 6, 2017 21:37
Option 3: Define a method, and then pass it to the find_each method
class AnonymiseUsers
include UseCasePattern
def perform
User.find_each(&method(:anonymise))
end
private
def anonymise(user)
@nigelramsay
nigelramsay / option2.rb
Created March 6, 2017 21:36
Option 2: Define a method on the User object, and then pass it to the find_each method
class AnonymiseUsers
include UseCasePattern
def perform
User.find_each(:anonymise)
end
end
class User
def anonymise
@nigelramsay
nigelramsay / option1.rb
Created March 6, 2017 21:35
Option 1: Define a block for the iterator
class User
def anonymise
Users.find_each do |user|
user.update_columns email: "#{user.id}@devnullmail.com"
end
end
end
# Wraps a request in a new transaction. Add to your controller like:
# around_filter :transactify, :only => [:update, :create, :destroy]
def transactify
logger.debug 'Beginning transaction'
ActiveRecord::Base.transaction do
yield
end
logger.debug 'Committing transaction'
puts "found entry #{entry.dn}"
dn = entry[:dn]
first_name = entry[:givenName] ? entry[:givenName].first : ''
surname = entry[:sn] ? entry[:sn].first : ''
roles = entry[:secondaryclassname]
class StaticAuthenticator
def authenticate(username, password)
case(username)
when 'nigel': return username, 'Nigel', 'Ramsay', ['QUALITYUSER', 'QUALITYSYSADMIN']
when 'santosh': return username, 'Santosh', 'Mani', ['QUALITYUSER', 'QUALITYSYSADMIN']
when 'user': return username, 'Quality', 'User', ['QUALITYUSER']
when 'admin': return username, 'Quality', 'Sys Admin', ['QUALITYSYSADMIN']
when 'somebody': return username, 'Objective', 'User', ['OBJECTIVE']
when 'nobody': return username, 'Nobody', 'User', []