Skip to content

Instantly share code, notes, and snippets.

Nate Hopkins hopsoft

Block or report user

Report or block hopsoft

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@hopsoft
hopsoft / README.md
Last active Aug 8, 2019
Create and publish an NPM package cheat sheet
View README.md
  1. Create an account on NPM https://www.npmjs.com

  2. Init your project

    mkdir example
    cd example
    yarn init
    
  3. Create a JavaScript file

@hopsoft
hopsoft / install-ruby.sh
Created May 21, 2019
Install ruby with rbenv and jemalloc on ubuntu
View install-ruby.sh
sudo apt-get update
sudo apt-get install libjemalloc-dev
RUBY_CONFIGURE_OPTS='--with-jemalloc' rbenv install 2.6.3
# test (look for jemalloc warnings)
MALLOC_CONF=invalid_flag:foo ruby -v
@hopsoft
hopsoft / README.md
Last active Apr 19, 2019
Query the recommended column order for PostgreSQL tables
View README.md
View gist:4944d9c9ef85c5adfa29034b90a86222
brew link libffi --force
export PKG_CONFIG_PATH="/usr/local/opt/libffi/lib/pkgconfig"
gem install ffi
@hopsoft
hopsoft / README.md
Last active Apr 19, 2019
Eliminate unauthorized ActionCable connection attempts
View README.md

Problem

Unauthorized ActionCable connection attempts that produce the following

Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket)
Finished "/cable/" [WebSocket] for 127.0.0.1 at 2018-11-16 08:32:24 -0700
An unauthorized connection attempt was rejected
@hopsoft
hopsoft / prefetch.js
Last active Dec 15, 2019
Turbolinks Prefetching
View prefetch.js
const hoverTime = 400
const fetchers = {}
const doc = document.implementation.createHTMLDocument('prefetch')
function fetchPage (url, success) {
const xhr = new XMLHttpRequest()
xhr.open('GET', url)
xhr.setRequestHeader('VND.PREFETCH', 'true')
xhr.onreadystatechange = () => {
if (xhr.readyState !== XMLHttpRequest.DONE) return
@hopsoft
hopsoft / assignable_job.rb
Last active May 15, 2018
Arel subquery condition
View assignable_job.rb
class AssignableJob < ApplicationRecord
has_many :assignments, as: :record, dependent: :destroy
scope :assigned, -> do
subquery = Assignment.where(record_type: name).where(Assignment.arel_table[:record_id].eq(arel_table[:id])).select(Assignment.arel_table[Arel.star].count)
where "(#{subquery.to_sql}) > 0" # TODO: move to Arel & remove string interpolation
end
end
@hopsoft
hopsoft / users.yml
Last active Feb 9, 2018
User Fixture
View users.yml
<% 100.times do |i| %>
user_<%= i %>:
id: <%= SecureRandom.uuid %>
first_name: <%= Faker::Name.first_name %>
last_name: <%= Faker::Name.last_name %>
email: <%= Faker::Internet.email %>
phone: <%= Faker::PhoneNumber.cell_phone %>
<% end %>
@hopsoft
hopsoft / action_controller_parameters.rb
Created Jan 19, 2018
Manually & Recursively Filter Rails Params
View action_controller_parameters.rb
module ActionControllerParameters
def filtered
filter_hash self.to_unsafe_hash
end
private
def filterer
@filterer ||= ActionDispatch::Http::ParameterFilter.new(Rails.application.config.filter_parameters)
end
@hopsoft
hopsoft / model_supports_bulk_updates.rb
Last active Apr 19, 2019
ActiveRecord Bulk / Batch Update
View model_supports_bulk_updates.rb
# frozen_string_literal: true
module ModelSupportsBulkUpdates
extend ActiveSupport::Concern
module ClassMethods
# Performs a bulk update with an efficient single query for all the records in the list.
# Note that the records are not reloaded form the database.
# This means that ActiveRecord will still see these records as dirty after the bulk_update.
def bulk_update(records)
You can’t perform that action at this time.