Skip to content

Instantly share code, notes, and snippets.

@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 / 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)
@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 / 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 / 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 / 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|
gem 'bootstrap-sass'
gem 'bcrypt-ruby', '~> 3.1.2'
gem_group :development, :test do
gem 'debugger'
end
gem_group :development do
gem 'commands'
Rails.if __FILE__ == $PROGRAM_NAME
$stdout.puts ENV['ouch']['ouch']
end
@delba
delba / connect.rb
Last active August 29, 2015 13:56
Gribouillis / Scrawl
class ConnectController
def authorize
redirect_to stripe_authorize_url
end
def callback
if code = params[:code]
auth_token = client.auth_code.get_token(code)
current_user.update!(token: auth_token)
# As a first example, let's consider an "adjacency list", a tree represented in a table. Suppose we have a table comments, representing a threaded discussion:
comments = Arel::Table.new(:comments)
# [:id, :body, :parent_id]
replies = comments.alias
comments_with_replies = \
comments.join(replies).on(replies[:parent_id].eq(comments[:id]))
# => SELECT * FROM comments INNER JOIN comments AS comments_2 WHERE comments_2.parent_id = comments.id