Skip to content

Instantly share code, notes, and snippets.

@coliver
coliver / YARD Doc Cheatsheet.md
Created March 29, 2022 14:37
YARD Doc Cheatsheet
@coliver
coliver / rdoc-markup-cheetsheet.md
Last active March 28, 2022 22:52
RDoc::Markup Cheetsheet
@coliver
coliver / ubuntu_20.04_ruby_dev_setup.md
Created July 8, 2021 19:21
Ubuntu 20.04 Ruby Development Setup

Ubuntu 20.04 Ruby Development Setup

Install chrome

download chrome .deb file from https://www.google.com/chrome/

sudo dpkg -i /tmp/mozilla_rubydev0/google-chrome-stable_current_amd64.deb

Install chromedriver

@coliver
coliver / RHNHSCTiD.md
Last active September 1, 2020 20:48
Rails Headful (Not Headless) Selenium Chrome Tests in Docker

This was tested on a Mac running 10.13.6 High Sierra.

Why? I wanted to be able to stop a system spec mid-run if I was having issues with it.

On the mac host:

Install brew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
@coliver
coliver / gist:0e6e00a94f5b01be623316555f8a25e2
Created April 24, 2020 18:30
git log - merges since whenever
git log --merges --first-parent master \
--pretty=format:"%h %<(10,trunc)%aN %C(white)%<(15)%ar%Creset %C(red bold)%<(15)%D%Creset %s"
Explaining each argument:
--merges: only "merge" commits (more than 1 parent);
--first-parent master: only merges applied to master. This removes the entries where someone merged master into their branches;
--pretty-format: applies the following formatting:
%h: the commit short hash;
%<(10,trunc)%aN: author name, truncated at 10 chars;
%<(15)%ar: the relative commit time, padded to 15 chars;
@coliver
coliver / global-gitignore.md
Created April 21, 2020 21:23 — forked from subfuzion/global-gitignore.md
Global gitignore

There are certain files created by particular editors, IDEs, operating systems, etc., that do not belong in a repository. But adding system-specific files to the repo's .gitignore is considered a poor practice. This file should only exclude files and directories that are a part of the package that should not be versioned (such as the node_modules directory) as well as files that are generated (and regenerated) as artifacts of a build process.

All other files should be in your own global gitignore file. Create a file called .gitignore in your home directory and add anything you want to ignore. You then need to tell git where your global gitignore file is.

Mac

git config --global core.excludesfile ~/.gitignore

Windows

git config --global core.excludesfile %USERPROFILE%\.gitignore
@coliver
coliver / Gemfile-lock-fix.md
Created March 23, 2020 14:01 — forked from carlflor/Gemfile-lock-fix.md
This fixes the Gemfile.lock conflict when doing git rebase

If both the upstream and your feature branch have made changes to Gemfile, you will likely receive merge conflicts on Gemfile.lock when you rebase your feature branch. Don't try to resolve these manually; you'll probably just screw it up. Instead do this:

    git checkout --ours Gemfile.lock
    bundle
    git add Gemfile.lock
    git rebase --continue

This ensures that you get a correct Gemfile.lock at each step along the way.

/* This file goes in ~/Library/KeyBindings */
{
/* Remap Home / End keys */
/* Home Button*/
"\UF729" = "moveToBeginningOfLine:";
/* End Button */
"\UF72B" = "moveToEndOfLine:";
/* Shift + Home Button */
"$\UF729" = "moveToBeginningOfLineAndModifySelection:";
/* Shift + End Button */
@coliver
coliver / net_ntlm_monkeypatch.rb
Created February 27, 2019 21:33 — forked from antoniusostermann/net_ntlm_monkeypatch.rb
A monkey patch to solve the problem described in https://github.com/savonrb/httpi/issues/139. This monkey patch prioritizes ntlm over negotiate and makes it possible to use the httpi gem if server supports both / sends header including both arguments.
# A monkey patch concerning this issue: https://github.com/savonrb/httpi/issues/139
# Basically, this monkey patch priors NTLM over Negotiate and not vice-versa
# All monkey patched spots are marked with "## MONKEY PATCHED"
# All in all, there are 2 monkey patched spots, both in private method "negotiate_ntlm_auth"
# Compare it with: https://github.com/savonrb/httpi/blob/d6a3825a8e896f794e54b634c39521e6956f72ff/lib/httpi/adapter/net_http.rb
require "uri"
require "httpi/adapter/base"
require "httpi/response"
@coliver
coliver / rubyntlm_with_net_http.rb
Created February 20, 2019 18:20 — forked from rodrei/rubyntlm_with_net_http.rb
Example: NTLM Authentication with NetHTTP
uri = URI('https://host.com/ews/exchange.asmx')
user = ''
passwd = ''
Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
request = Net::HTTP::Get.new(uri.request_uri)
t1 = Net::NTLM::Message::Type1.new()
request['Authorization'] = 'NTLM ' + t1.encode64
response = http.request(request)