Skip to content

Instantly share code, notes, and snippets.

View lukemelia's full-sized avatar
💭
Making Yapp better all the time and likely working on some Ember.js OSS

Luke Melia lukemelia

💭
Making Yapp better all the time and likely working on some Ember.js OSS
View GitHub Profile
@lukemelia
lukemelia / report_open_experiments_to_yappie_job.rb
Created April 22, 2014 17:11
Reporting active A/B tests to Slack using Split, Sidekiq, Sidetiq
class ReportOpenExperimentsToYappieJob
include Sidekiq::Worker
sidekiq_options :queue => :yappie
include Sidetiq::Schedulable
recurrence { daily.hour_of_day(9) }
def perform
active_experiments = Split::Experiment.all.select{ |exp| exp.winner.nil? }
active_experiments.each do |experiment|
@lukemelia
lukemelia / query-param-ideas.js
Created December 4, 2013 02:26
Sketches for Ember query param support
FooController = Em.Controller.extend({
queryParamBindings: ['bar'],
bar: 'baz',
widgets: Ember.computed.sort('content', 'bar')
})
FooController = Em.Controller.extend({
queryParamBindings: ['bar:barbados'],
bar: 'baz',
@lukemelia
lukemelia / minispade_resolver.coffee
Created June 19, 2013 03:33
Example of a custom Ember resolver for minispade
get = Ember.get
decamelize = Ember.String.decamelize
classify = Ember.String.classify
window.MinispadeResolver = Ember.DefaultResolver.extend
logFailedLookups: false
resolveTemplate: (parsedName)->
resolvedTemplate = @_super(parsedName)
unless resolvedTemplate
template_key = "#{decamelize(parsedName.fullNameWithoutType).replace(/\./, '_')}"
LOG_LEVEL = 'debug'
Logs everything at a debug level. Defaults to 'warn'.
Outputs: 'Global log level set to "debug". This may be overwhelming.
To focus detailed logging, set log level directly on one of the following:
ROUTER_TRANSITIONS_LOG_LEVEL, ACTIVE_GENERATION_LOG_LEVEL, VIEW_LOOKUP_LOG_LEVEL, ...
When logging is output, the category is included:
@lukemelia
lukemelia / gist:5653804
Created May 26, 2013 19:43
converting from our connect_controllers style to needs
#!/usr/env ruby
require 'rubygems'
require 'active_support'
require 'active_support/core_ext/string'
cc_map = {
page: ['feedEntries', 'mediaWell', 'videosWell', 'crowdPicsImages', 'user', 'videos'],
cover: ['yapp'],
pageEdit: ['page'],
@lukemelia
lukemelia / buffered_proxy.js
Last active May 5, 2016 20:47
Buffered Proxy, extracted from Yapp codebase
var empty, get, set,
__hasProp = {}.hasOwnProperty;
get = Ember.get;
set = Ember.set;
empty = function(obj) {
var key;
for (key in obj) {
if (!__hasProp.call(obj, key)) continue;
@lukemelia
lukemelia / app_with_resolver.coffee
Created March 19, 2013 14:56
How we are using the new resolver hook in ember.js master to auto-require most of our minispade modules
get = Ember.get
decamelize = Ember.String.decamelize
classify = Ember.String.classify
MinispadeResolver = Ember.DefaultResolver.extend
logFailedLookups: true
resolveTemplate: (parsedName)->
resolvedTemplate = @_super(parsedName)
unless resolvedTemplate
try
@lukemelia
lukemelia / always.js
Created February 21, 2013 19:10
chaining jquery then vs jquery always
var start = Yapp.promise(function(deferred) {
console.log("Resolving chain part 1")
deferred.resolve()
}).always(function(){
return Yapp.promise(function(deferred) {
setTimeout(function(){
console.log("Resolving chain part 2")
deferred.resolve()
}, 100);
})
@lukemelia
lukemelia / batch.js
Created August 13, 2012 20:50
Batch transaction save
App.profileEditorController = Em.ObjectController.extend({
addressBinding: 'content.address'
});
App.Router = Em.Router.extend({
root: Em.Route.extend({
profile: Em.Route.extend({
route: 'profile',
(($)->
$.fn.logoPopup = ->
this.mousedown ->
$(document).bind("contextmenu", (event)->
true
)
if event.which == 3
$('<div id="logo-lightbox-container">').hide().appendTo('body').load('/u/logo', ->
$.easybox("#logo-lightbox-container")
)