Skip to content

Instantly share code, notes, and snippets.

View bryanmtl's full-sized avatar

Bryan Mahoney bryanmtl

View GitHub Profile
@bryanmtl
bryanmtl / query.sql
Created August 26, 2019 17:21
Looker query
SELECT
customers.first_name AS "customers.first_name",
(COALESCE(CAST( ( SUM(DISTINCT (CAST(FLOOR(COALESCE(customers.total_spent ,0)*(1000000*1.0)) AS DECIMAL(65,0))) + ('x' || MD5(customers.id ::varchar))::bit(64)::bigint::DECIMAL(65,0) *18446744073709551616 + ('x' || SUBSTR(MD5(customers.id ::varchar),17))::bit(64)::bigint::DECIMAL(65,0) ) - SUM(DISTINCT ('x' || MD5(customers.id ::varchar))::bit(64)::bigint::DECIMAL(65,0) *18446744073709551616 + ('x' || SUBSTR(MD5(customers.id ::varchar),17))::bit(64)::bigint::DECIMAL(65,0)) ) AS DOUBLE PRECISION) / CAST((1000000*1.0) AS DOUBLE PRECISION), 0) / NULLIF(COUNT(DISTINCT CASE WHEN customers.total_spent IS NOT NULL THEN customers.id ELSE NULL END), 0)) AS "customers.avg_spent"
FROM shopify.orders AS orders
LEFT JOIN shopify.customers AS customers ON customers.id = orders.customer__id
GROUP BY 1
ORDER BY 2 DESC
LIMIT 500
@bryanmtl
bryanmtl / publish.sh
Created February 8, 2018 17:06
Gitbook -> GH Pages
#!/bin/bash
# install the plugins and build the static site
gitbook install && gitbook build
# checkout to the gh-pages branch
git checkout gh-pages
# pull the latest updates
git pull origin gh-pages --rebase
staging:
first_thing:
- command: apt-get install awscli -y
target: any
execute: true
sudo: true
- source: /.cloud66/node
destination: /tmp/install.sh
target: rails
execute: true
@bryanmtl
bryanmtl / gist:e816cf2600e7b91d3c11
Created July 20, 2014 15:17
Ruby Inline - Permission Problems
staging:
before_rails:
- source: /.cloud66/files/ruby_inline.sh
destination: /tmp/ruby_inline.sh
target: rails
halt_on_error: false
execute: true
run_on: all_servers
apply_during: all
sudo: true
@bryanmtl
bryanmtl / consume_store_credits.rb
Created November 25, 2013 18:58
Spree store credit fix
Spree::Order.class_eval do
checkout_flow do
go_to_state :address
go_to_state :delivery
go_to_state :payment, :if => lambda { |order| order.payment_required? }
go_to_state :confirm, :if => lambda { |order| order.confirmation_required? }
go_to_state :complete, :if => lambda { |order| (order.payment_required? && order.has_unprocessed_payments?) || !order.payment_required? }
remove_transition :from => :delivery, :to => :confirm
end
Spree::Shipment.class_eval do
def send_shipped_email
unless Rails.env.production?
::Spree::ShipmentMailer.shipped_email(self.id).deliver
end
end
end
Spree::Order.class_eval do
def deliver_order_confirmation_email
@bryanmtl
bryanmtl / gist:6231471
Last active December 21, 2015 01:58
A quick rake task to identify possible Spree orders that contain invalid payments that might actually have been successfully processed
# Rake task
desc 'Generate a list of potential orders with falsely flagged invalid payments'
task list_orders_with_complete_and_invalid_payments: :environment do
Spree::Order.complete.where(legacy: false).each do |order|
if order && order.has_mulitple_payments? && order.has_an_invalid_and_complete_payment?
puts " -> Order #{order.number} has a potentially problematic payment"
end
end
end
@bryanmtl
bryanmtl / gist:4246638
Created December 9, 2012 19:30
Elastic search data query not returning results
Query:
curl -X GET "http://localhost:9200/spree_products/spree%2Fproduct/_search?from=0&load=false&page=1&per_page=20&size=20&pretty=true" -d '{"query":{"bool":{"must":[{"query_string":{"query":"Carry","default_operator":"AND"}},{"range":{"available_on":{"lte":"2011-12-08T11:43:53Z"}}}]}},"size":20,"from":0}'
Returns:
{
"took" : 7,
"timed_out" : false,
"_shards" : {
"total" : 5,
@bryanmtl
bryanmtl / spree promotion fix
Created June 29, 2012 02:40
Allows coupons to be added to Spree orders in a non-complete state, regardless of the date the order was created on
module Extensions
module Spree
module Promotion
extend ActiveSupport::Concern
included do
alias_method_chain :order_activatable?, :no_date_limitation
end
def order_activatable_with_no_date_limitation?(order)