Skip to content

Instantly share code, notes, and snippets.

View mech's full-sized avatar
🏠
Working from home

mech mech

🏠
Working from home
  • Career Pacific / Jobline
  • Singapore, Tampines
View GitHub Profile
@mech
mech / association_loader.rb
Created September 22, 2017 07:27 — forked from theorygeek/association_loader.rb
Preloading Associations with graphql-batch
# frozen_string_literal: true
class AssociationLoader < GraphQL::Batch::Loader
attr_reader :klass, :association
def initialize(klass, association)
raise ArgumentError, "association to load must be a symbol (got #{association.inspect})" unless association.is_a?(Symbol)
raise ArgumentError, "cannot load associations for class #{klass.name}" unless klass < ActiveRecord::Base
raise TypeError, "association #{association} does not exist on #{klass.name}" unless klass.reflect_on_association(association)
@klass = klass
@mech
mech / jquery.ajax.progress.js
Created July 5, 2016 11:20 — forked from db/jquery.ajax.progress.js
add XHR2 progress events to jQuery.ajax
(function addXhrProgressEvent($) {
var originalXhr = $.ajaxSettings.xhr;
$.ajaxSetup({
progress: function() { console.log("standard progress callback"); },
xhr: function() {
var req = originalXhr(), that = this;
if (req) {
if (typeof req.addEventListener == "function") {
req.addEventListener("progress", function(evt) {
that.progress(evt);
@mech
mech / AddContact.jsx
Created April 22, 2016 07:10 — forked from dvonlehman/AddContact.jsx
React without flux or redux complexity
import React from 'react';
import request from 'superagent';
// This import syntax requires the babel transform-export-extensions plugin
import dispatcher, {actions} from '../lib/dispatcher';
export default class AddContact extends React.Component {
submitHandler(event) {
request.post('/api/contacts')
.send({
firstName: this.refs.firstName.value,

In Rails 3

If you add a dir directly under app/

Do nothing. All files in this dir are eager loaded in production and lazy loaded in development by default.

If you add a dir under app/something/

(e.g. app/models/concerns/, app/models/products/)

@mech
mech / education.rb
Last active December 15, 2015 23:59
Trying to see how DDD can help in modeling ATS's Education model.
# Entity - Represent an important domain concept with identity and life cycle.
class Education
def initialize(institution, course, when)
@institution = Institution.new(institution) # Institution is an Value Object that is immutable
@course = Course.for(course) # Course is an Value Object too
@period = period(when) # PostgreSQL's daterange Range Type
end
def course_ended? # Query method - Based on period, is CA still studying?
# Public: A module to be mixed in another class with common methods to index
# records in ElasticSearch.
#
# The host object needs to respond to 'indexed_attributes', which will return
# an array of the attributes names to be indexed.
#
# It's also recommended to override the 'save?' method to make sure only
# records that match some specifications are indexed.
#
# The type used for the ElasticSearch index will be extracted from the name of
# But why not just this?
# More straightfoward and faster to write...
class Job < ActiveRecord::Base
def publish
update_attribute(:status, "published")
JobActivityFeed.create("#{title} has been published", id)
JobMailer.info_consultant(id, "consultant@cp.com").deliver
end
end
@mech
mech / .rspec
Created January 15, 2013 09:09 — forked from coreyhaines/.rspec
--colour
-I app
require 'singleton'
# outputs a colored call-trace graph to the Rails logger of the lines of ruby code
# invoked during a single request.
#
# Example:
#
# 1) Make sure this file is loaded in an initializer
#
# 2) Add the following to your application.rb in Rails3: