Skip to content

Instantly share code, notes, and snippets.

View plcstevens's full-sized avatar

Philip Stevens plcstevens

View GitHub Profile
function callReevoo(cat, act, sku, url) {
ReevooMark.Tracking.ga_track_event(cat, act, sku);
ReevooMark.track_exit();
setTimeout(function(){ window.location=url; }, 500);
return false;
}
@plcstevens
plcstevens / no_pre_compile.rb
Last active August 29, 2015 14:06
Only pre-compile when necessary
# set the locations that we will look for changed assets to determine whether to precompile
set :assets_dependencies, %w(app/assets lib/assets vendor/assets Gemfile.lock config/routes.rb)
# clear the previous precompile task
Rake::Task["deploy:assets:precompile"].clear_actions
class PrecompileRequired < StandardError; end
namespace :deploy do
namespace :assets do
desc "Precompile assets"
@plcstevens
plcstevens / reevoomark2.js
Last active August 29, 2015 14:06
Possible implementation technique for future JavaScipt library. This would avoid issues with asynchronous vs synchronous method calls and also allow for a very verbose API that would be easily extendable.
(function(url, name){
(window.ReevooMarkObjects = window.ReevooMarkObjects || []).concat([name]);
window[name] = window[name] || function(){
(window[name].queue = window[name].queue || []).push([arguments]);
};
var script = document.createElement("script");
script.async = true;
script.src = url;
@plcstevens
plcstevens / reevoomark_defined.js
Last active August 29, 2015 14:06
This is how we can allow users to call ReevooMark api actions from outside of our callbacks. Please note as this is all asynchronous, ReevooMark is not guaranteed to exist. Therefore this should only be used when the call to ReevooMark occurs some time after page load.
(function() {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = '//cdn.mark.reevoo.com/assets/reevoo_mark.js';
var s = document.getElementById('reevoomark-loader');
s.parentNode.insertBefore(script, s);
})();
afterReevooMarkLoaded = [function() {
ReevooApi.load('YOUR_TRKREF', function(retailer) {
@plcstevens
plcstevens / template.rb
Created January 6, 2015 10:51
Benchmark template
require "benchmark"
Benchmark.bm(10000) do |x|
x.report("A") { }
x.report("B") { }
end
Rehearsal ---------------------------------------------
any? 0.000000 0.000000 0.000000 ( 0.000885)
all? 0.000000 0.000000 0.000000 ( 0.000279)
min block 0.960000 0.000000 0.960000 ( 0.958517)
------------------------------------ total: 0.960000sec
user system total real
any? 0.000000 0.000000 0.000000 ( 0.000886)
all? 0.000000 0.000000 0.000000 ( 0.000297)
min block 0.970000 0.000000 0.970000 ( 0.974703)
@plcstevens
plcstevens / controller_example.rb
Last active August 29, 2015 14:26
Include this in controllers and render with your JSON to get pagination URLs matching http://jsonapi.org/format/#fetching-pagination specification. Requires that you use https://github.com/amatsuda/kaminari
class ExamplesController < ApplicationController
def index
@examples = Example.order(id: :desc)
render json: { pagination: paginate(@examples), examples: @examples }
end
private
def paginate(active_relation)
Pagination.for(self, active_relation)
es_alias = ENV.fetch('ALIAS')
hosts = ENV.fetch('HOSTS')
old_index = ENV.fetch('OLD_INDEX')
old_type = ENV.fetch('OLD_TYPE')
new_index = ENV.fetch('NEW_INDEX')
new_type = ENV.fetch('NEW_TYPE')
size = ENV.fetch('SCAN_SIZE', 100)
client = Elasticsearch::Client.new(hosts: hosts)
unless client.indices.exists(index: new_index)

Comufyrails

This gem allows Ruby on Rails projects to connect with the Comufy service. It uses asynchronous calls and separate rake tasks to communicate with the Comufy API, allowing you to create, update your list of users as well as registering new tags and send messages to your users.

Installation

Add any of the lines to your application's Gemfile:

require 'comufy'
connect = Comufy.connect(access_token: ENV["COMUFY_ACCESS_TOKEN"], expiry_token: Time.now.to_i + 1000000)
# or use a yaml file
# connect = Comufy.connect(yaml: "path/to/yaml/file")
# lets add a user to our facebook application!
# http://graph.facebook.com/THEIR_NAME will get you back their id
# tags are the data fields to enter for this user.
app_name = "NAME_OF_YOUR_APPLICATION"