Skip to content

Instantly share code, notes, and snippets.

@delba
delba / holes.html.erb
Last active August 2, 2018 07:41
ruby on rails timetable / planner
<%
min_hour, max_hour = @slots.minimum_hour, @slots.maximum_hour
datetimes = (@slots.minimum_date..@slots.maximum_date).map do |date|
(min_hour..max_hour).map do |hour|
date.to_datetime.change(hour: hour)
end
end.flatten
@slots = @slots.group_by(&:datetime)
let google: Provider = .google(clientID: "", clientSecret: "")
google.scopes = ["email", "profile"]
google.authorize(getCode: { code, url in
// prompt user to visit url and enter code
}) { result in
switch result {
case .success(let token):
print(token)
case .failure(let error):
@delba
delba / BackgroundView.swift
Last active May 7, 2016 12:46
Gradient background in Swift
//
// BackgroundView.swift
// Quiz
//
// Created by Damien D on 09/09/2014.
// Copyright (c) 2014 Damien D. All rights reserved.
//
import UIKit
@delba
delba / application_controller.rb
Last active March 17, 2016 09:57
use current_user in controller tests
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
private
def signed_in?
!!session[:user_id]
end
helper_method :signed_in?
@delba
delba / person.rb
Last active January 2, 2016 23:19
Ruby finders
class Person
@all = []
def self.all
@all
end
def self.where(conditions)
all.select do |person|
conditions.map do |k, v|
@delba
delba / application.rb
Created November 5, 2013 20:03
Load custom validators in Rails 4
module Macchiato
class Application < Rails::Application
config.autoload_paths += Dir[Rails.root.join('lib', 'validators').to_s]
end
end
@delba
delba / routes.rb
Created September 20, 2013 16:38
rails module scope in routes
Antihero::Application.routes.draw do
scope module: :admin, as: :admin do
root 'dashboard#index'
resources :articles, only: [:new, :create]
end
end
# Prefix Verb URI Pattern Controller#Action
# admin_root GET / admin/dashboard#index
# admin_articles GET /articles(.:format) admin/articles#index
@delba
delba / duration.rb
Last active December 22, 2015 21:39
DateTime#strptime parse datetime
duration = '1h2min3s'
# duration = '2min3s'
# duration = '3s'
# match = duration.match(/(?<hours>.+h)?(?<minutes>.+min)?(?<seconds>.+s)?/)
# hours, minutes, seconds = [match[:hours], match[:minutes], match[:seconds]].map(&:to_i)
# 3600 * hours + 60 * minutes + seconds
match = duration.match(/
( (?<hours>[[:digit:]]+)h ){0,1}
@delba
delba / slot.rb
Last active December 21, 2015 22:59
AR group by time or date
Slot.group('TIME(datetime)').count
# => {"06:00:00"=>8, "07:00:00"=>8, "08:00:00"=>8, "09:00:00"=>8, "10:00:00"=>8, "11:00:00"=>8, "12:00:00"=>8, "13:00:00"=>8, "14:00:00"=>8, "15:00:00"=>8, "16:00:00"=>8, "17:00:00"=>8, "18:00:00"=>8, "19:00:00"=>8}
Slot.group('DATE(datetime)').count
# => {"2013-08-29"=>14, "2013-08-30"=>14, "2013-08-31"=>14, "2013-09-01"=>14, "2013-09-02"=>14, "2013-09-03"=>14, "2013-09-04"=>14, "2013-09-05"=>14}
Slot.group('datetime::time').count
Slot.group('datetime::date').count
@delba
delba / club.rb
Last active December 21, 2015 10:59
Map
class Club < ActiveRecord::Base
def self.center
@center ||= south_west.zip(north_east).map do |a|
(a[0] + a[1]) / 2
end
end
def self.south_west
@south_west ||= [minimum(:lat), minimum(:lng)]
end