Skip to content

Instantly share code, notes, and snippets.

View yukas's full-sized avatar

Yury Kaspiarovich yukas

View GitHub Profile
@yukas
yukas / user_creator_spec.rb
Created July 28, 2016 09:38
Testing service object
describe UserCreator do
describe "#create_user" do
it "creates user" do
user_creator = UserCreator.new("ian@brown.com", "Ian", "Brown")
user_creator.create_user
expect(user_creator.created_user.email).to eq("ian@brown.com")
expect(user_creator.created_user.first_name).to eq("Ian")
expect(user_creator.created_user.last_name).to eq("Brown")
end
@yukas
yukas / user_creator.rb
Created July 28, 2016 09:35
Example of a good service object
class UserCreator
attr_reader :email, :first_name, :last_name
attr_reader :created_user
def initialize(email, first_name, last_name)
@email = email
@first_name = first_name
@last_name = last_name
raise ArgumentError, "Missing email" if email.nil?
import UIKit
class ScanViewController: UIViewController, BarcodeCapturerDelegate {
var barcodeCapturer: BarcodeCapturer!
override func viewDidLoad() {
super.viewDidLoad()
barcodeCapturer = BarcodeCapturer(bounds: view.layer.bounds, delegate: self)
view.layer.addSublayer(barcodeCapturer.previewLayer)
import AVFoundation
import UIKit
class ScanViewController: UIViewController, AVCaptureMetadataOutputObjectsDelegate {
var captureSession: AVCaptureSession!
var previewLayer: AVCaptureVideoPreviewLayer!
var previousScannedValue: String?
override func viewDidLoad() {
import AVFoundation
import UIKit
class ScanViewController: UIViewController, AVCaptureMetadataOutputObjectsDelegate {
var captureSession: AVCaptureSession!
var previewLayer: AVCaptureVideoPreviewLayer!
var previousScannedValue: String?
override func viewDidLoad() {
import AVFoundation
class BarcodeCapturer: NSObject, AVCaptureMetadataOutputObjectsDelegate {
var bounds: CGRect
var delegate: BarcodeCapturerDelegate
var previewLayer: AVCaptureVideoPreviewLayer!
private var captureSession: AVCaptureSession!
private var previousScannedValue: String?
@yukas
yukas / order_canceller_(refined).rb
Last active June 24, 2016 10:14
Better way to arrange methods in a Ruby class
class OrderCanceller
attr_reader :order
def initialize(order)
@order = order
end
def cancel_order
change_status
log_cancellation
@yukas
yukas / order_canceller.rb
Last active June 24, 2016 09:59
Ugly way to organize methods in Ruby class
class OrderCanceller
attr_reader :order
def initialize(order)
@order = order
end
def send_notification
OrderMailer.cancel_emal(order).deliver
end
# order.rb
class Order < ActiveRecord::Base
delegate :email, to: :real_user, prefix: :user
belogns_to :user
def real_user
user || AnonymousUser.new
end
end
class ReportsController < ApplicationController
def index
raise "Can't operate without event date" if params[:event_date_id].blank?
# ...
end
end