Skip to content

Instantly share code, notes, and snippets.

View ccashwell's full-sized avatar
🤔
¯\_(ツ)_/¯

Chris Cashwell ccashwell

🤔
¯\_(ツ)_/¯
View GitHub Profile
@ccashwell
ccashwell / github_ssh.sh
Created November 8, 2012 22:29
Bash Scripting: OAUTH2 Authorization, Generating SSH keys and Adding Keys to GitHub
#!/bin/bash
# This is an example of OAUTH2 authorization via GitHub and adding a new (optionally generated) SSH key to your account.
# If generated, the key is put in the default location with no password. Security is obviously relaxed for brevity's sake. Enjoy.
read -p "GitHub Username: " uname
read -s -p "GitHub Password: " passwd
if [[ "$uname" == "" || "$passwd" == "" ]]; then
echo -e "\n\nCan't set up your GitHub SSH keys without authorization. You're on your own now, champ."
exit 1
fi
@ccashwell
ccashwell / restrict_by_request_type.rb
Last active November 29, 2018 22:32
CanCan Authorization: Restrict resources by request format JSON
# Lock down controller actions with CanCan based on request format.
class Ability
include CanCan::Ability
def initialize(user, format=nil)
user ||= User.new
can :index, Model if format == "application/json"
end
end
@ccashwell
ccashwell / .vimrc.local
Last active December 16, 2015 08:19
Vim mappings to (a) run rspec tests in-line, and (b) shell the iOS simulator
" RSpec mappings:
" <Leader>rs – run entire spec suite
" <Leader>rd – run all specs in the pwd
" <Leader>rf – run all specs in the current file
" <Leader>rl – run the line under the cursor
noremap <Leader>rs :call RunSpec('spec', '-fp')<CR>
noremap <Leader>rd :call RunSpec(expand('%:h'), '-fd')<CR>
noremap <Leader>rf :call RunSpec(expand('%'), '-fd')<CR>
noremap <Leader>rl :call RunSpec(expand('%'), '-fd -l ' . line('.'))<CR>
@ccashwell
ccashwell / .gitconfig
Last active December 16, 2015 16:09
Git configuration including several shortcuts and helpers
[core]
excludesfile = ~/.gitignore_global
excludesfile = ~/.gitignore
# When paging to less:
# * -x2 Tabs appear as two spaces
# * -S Chop long lines
# * -F Don't require interaction if paging less than a full screen
# * -X No scren clearing
# * -R Raw, i.e. don't escape the control characters that produce colored output
pager = less -FXRS -x2
@ccashwell
ccashwell / env_setup.sh
Last active December 16, 2015 16:39
WIP
#!/bin/bash
#
# This script will get a Chris-approved environment setup done right, with just one command. Enjoy.
echo -e "##### Installing: RVM #####\n"
curl -L https://get.rvm.io | bash -s stable --autolibs=3 --rails
echo -e "##### Installing: Homebrew #####\n"
ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"
package com.some.api.support;
import com.some.domain.User;
public class AuthenticationResult {
private String token;
private User user;
public String getToken() {
return token;
describe "Argument Extraction Experiment" do
let(:experiment_class) do
Class.new do
def method_with_mixed_args(one, two = 2, three:, four: 4)
extract_args(binding)
end
def method_with_named_args(one:, two: 2, three: 3)
extract_named_args(binding)
end

Keybase proof

I hereby claim:

  • I am ccashwell on github.
  • I am ccashwell (https://keybase.io/ccashwell) on keybase.
  • I have a public key whose fingerprint is DD00 5D98 747D 1207 DBBB EB9B 5BA0 9DC7 E2E8 DA34

To claim this, I am signing this object:

@ccashwell
ccashwell / getDiscountCode.html
Last active January 19, 2023 15:25
Autofill Discount Code from Shopify URL
<script>
/* Put this in theme.liquid, preferably right before "</body>" */
(function() {
var discountParam = document.location.search.match(/discount=(\w+)/);
if (discountParam && discountParam.length > 1) {
document.cookie = discountParam[0];
}
})();
</script>
@ccashwell
ccashwell / QuillTable.jsx
Last active November 2, 2017 22:35
Building Proof-of-Concept Table Support for Quill.js using React Components
import Quill from 'quill'
import TableComponent from 'TableComponent'
import ReactDOM from 'react-dom'
const QuillEmbed = Quill.import('blots/block/embed');
class QuillTable extends QuillEmbed {
static create(values) {
let node = super.create(values);