Skip to content

Instantly share code, notes, and snippets.

View ericchernuka's full-sized avatar

Eric Chernuka ericchernuka

View GitHub Profile
@ericchernuka
ericchernuka / file_replication_multi-region.rb
Created August 9, 2012 21:52
Replication of a file from the default US region into an Asia bucket.
#!/usr/bin/env ruby
require 'rubygems'
require 'fileutils'
require 'date'
require 'chronic'
require 'fog'
#Set the default directory for relative paths.
Dir.chdir(File.expand_path(File.dirname(__FILE__)))
@ericchernuka
ericchernuka / bash_prompt
Created January 15, 2013 16:28
Stylish new bash prompts
#!/bin/bash
# bash_prompt
# Inspired by https://github.com/necolas/dotfiles/blob/master/bash/bash_prompt
# iTerm2 prefs: import Solarized theme (disable bright colors for bold text)
# Color ref: http://vim.wikia.com/wiki/Xterm256_color_names_for_console_Vim
# More tips: http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html
#Session controller provides a token
#/controllers/api/sessions_controller.rb
class Api::SessionsController < Devise::SessionsController
before_filter :authenticate_user!, :except => [:create]
before_filter :ensure_params_exist, :except => [:destroy]
respond_to :json
def create
resource = User.find_for_database_authentication(:email => params[:user_login][:email])
return invalid_login_attempt unless resource
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Information</key>
<dict>
<key>Description</key>
<string>Map Rails ActiveSupport timezones to iOS readable timezone IDs.</string>
<key>Version</key>
<string>1.0</string>
[
{
"id": 830,
"start": 1262279460,
"end": 1262281260,
"title": "\u003cscript\u003ealert(\"foo\")\u003c/script\u003e",
"body": "",
"multi": 0,
"allDay": false,
"extension_id": 2
@ericchernuka
ericchernuka / pundit_matchers.rb
Created March 11, 2014 14:56
Pundit Matchers for Rspec 3.0
RSpec::Matchers.define :permit do |action|
match do |policy|
policy.public_send("#{action}?")
end
failure_message do |policy|
"#{policy.class} does not permit #{action} on #{policy.record} for #{policy.user.inspect}."
end
failure_message_when_negated do |policy|
@ericchernuka
ericchernuka / mobile_app_info.rb
Created October 22, 2014 17:48
Mobile App Info
class MobileAppInfo
#
# @param platform [String] Device Platform ("ios" or "android")
# @param app_name [String] Mobile App Name ("makeshift" or "makeshift_live")
# @param app_version = "" [String] App Version
#
def initialize(platform, app_name, app_version = "")
raise ArgumentError.new("Mobile App name is required. Example: 'makeshift'") unless UserDevice::APP_NAMES.include?(app_name)
raise ArgumentError.new("Mobile Platform is required. Example: 'ios'") unless UserDevice::DEVICE_TYPES.include?(platform)
@ericchernuka
ericchernuka / .eslintrc
Created March 14, 2016 14:08 — forked from mjackson/.eslintrc
My personal ESLint config
{
"extends": "airbnb",
"parser": "babel-eslint",
"rules": {
"array-bracket-spacing": [2, "always"],
"comma-dangle": 0,
"consistent-return": 1,
"curly": [1, "multi-or-nest", "consistent"],
"eqeqeq": [2, "smart"],
"max-len": 1,
@ericchernuka
ericchernuka / ReactInterval.jsx
Last active March 21, 2017 21:18
React Interval Component
import React, { Component } from 'react';
/**
* Declarative approach to setInterval
*/
class ReactInterval extends Component {
static propTypes = {
enabled: React.PropTypes.bool,
interval: React.PropTypes.number, // interval time in ms
onInterval: React.PropTypes.func.isRequired
@ericchernuka
ericchernuka / dsDropdown.js
Created August 31, 2017 03:14
Downshift Boostrap
import React from 'react'
import Downshift from 'downshift'
export default class Dropdown extends React.Component {
render() {
const { children, onChange } = this.props
return (
<Downshift onChange={onChange}>
{({