Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

View Sija's full-sized avatar

Sijawusz Pur Rahnama Sija

View GitHub Profile
@Sija
Sija / retry.cr
Last active February 16, 2018 02:41
def retry(limit, *, backoff = nil)
attempts = 1
loop do
return yield
rescue error
raise error if attempts == limit
sleep(backoff * attempts) if backoff
attempts += 1
end
end
@Sija
Sija / .htaccess
Created July 26, 2016 00:47
no-www mod_rewrite apache .htaccess redirect
<IfModule mod_rewrite.c>
RewriteEngine on
# Preserve HTTP/HTTPS protocol in .htaccess redirects
# http://stackoverflow.com/a/20419821/601064
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ - [env=proto:https]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ - [env=proto:http]
class AssertionError < Exception
end
# If `cond` is `false`, raise `exc`.
# If `exc` is not provided, `AssertionError` will be raised instead with information about the faulty expression.
# If the expression is a comparison, the result of each side of the comparison will also be shown.
macro assert(cond, exc = nil)
unless {{ cond }}
{% if exc %}
raise {{ exc }}
@Sija
Sija / actionmailer_i18n_monkeypatch.rb
Created July 1, 2015 00:27
Make Rails' 4.2 ActionMailer locale aware or i18n for ya emailz
module ActionMailer
class MessageDelivery
private
def enqueue_delivery(delivery_method, options={})
args = @mailer.name, @mail_method.to_s, delivery_method.to_s, I18n.locale.to_s, *@args
ActionMailer::DeliveryJob.set(options).perform_later(*args)
end
end
class DeliveryJob
def perform(mailer, mail_method, delivery_method, locale, *args) # :nodoc:

Keybase proof

I hereby claim:

  • I am sija on github.
  • I am sija (https://keybase.io/sija) on keybase.
  • I have a public key whose fingerprint is 7D5B 64C2 BA55 F96F D21B 8843 1551 5E26 9AB4 D86A

To claim this, I am signing this object:

@Sija
Sija / dimensions_validator.rb
Last active December 27, 2015 12:49
DimensionsValidator to use for images uploaded using Paperclip.
class DimensionsValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
temp_file = value.queued_for_write[:original]
return unless temp_file.present?
return unless geo = Paperclip::Geometry.from_file(temp_file)
options.slice(:width, :height).each_pair do |key, expectation|
next unless dimension = geo.send(key)
case expectation
moduleKeywords = ['extended', 'included']
class Module
@extend: (obj) ->
for key, value of obj when key not in moduleKeywords
@[key] = value
obj.extended?.apply(@)
this
@Sija
Sija / db.rake
Created June 3, 2012 12:40
YAML data seeds importer for Rails 3
require 'active_record/fixtures'
namespace :db do
desc 'Seed the database with once/ and always/ fixtures.'
task :seed => :environment do
load_fixtures 'seed/once'
load_fixtures 'seed/always', :always
end
desc 'Seed the database with develop/ fixtures.'
@Sija
Sija / unicorn
Last active September 29, 2015 19:57
Unicorn init.d script
#!/bin/sh
### BEGIN INIT INFO
# Provides: unicorn
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: unicorn initscript
# Description: Unicorn is an HTTP server for Rack application
### END INIT INFO
@Sija
Sija / typeOf-alt.coffee
Last active September 25, 2015 23:08
Object.type
# Execute function immediately
typeOf = do ->
classToType = {}
for name in 'Boolean Number String Function Array Date RegExp Undefined Null'.split ' '
classToType["[object #{name}]"] = name.toLowerCase()
# Return a function
(obj) ->
strType = Object::toString.call obj
classToType[strType] or 'object'