Skip to content

Instantly share code, notes, and snippets.

View ngpestelos's full-sized avatar

Nestor G Pestelos Jr ngpestelos

View GitHub Profile
@ngpestelos
ngpestelos / pusher_server_side.rb
Created September 3, 2013 12:20
Pusher server-side
# add gem 'pusher' to your Gemfile
require 'pusher-client'
PusherClient.logger = Logger.new(STDOUT)
options = {secret: 'my_secret'}
socket = PusherClient::Socket.new('my_key', options)
socket['private-foo'].bind('client-status') do |data|
puts "Got data: #{data}"
@ngpestelos
ngpestelos / pusher_subscribe.coffee
Created September 3, 2013 02:17
subscribe to a Pusher channel
pusher = new Pusher("#{Settings.pusher_key}")
channel = pusher.subscribe("integrations-ui")
channel.bind('some-event', function(data) {
alert(data.message)
})
@ngpestelos
ngpestelos / scope_gate.rb
Created September 1, 2013 09:34
scope gate
# see Metaprogramming Ruby, p. 70
v1 = 1
class MyClass
puts "Scope gate: entering class"
v2 = 2
puts " Local variables: #{local_variables}"
def my_method
puts "Scope gate: entering method"
v3 = 3
@ngpestelos
ngpestelos / open_scope_gate.rb
Created September 1, 2013 09:25
opening scope gates
# see Metaprogramming Ruby, p. 72
my_var = "success"
MyClass = Class.new do
puts "#{my_var} in the class definition!"
define_method :my_method do
puts "#{my_var} in the method!"
end
@ngpestelos
ngpestelos / closure.rb
Created September 1, 2013 09:22
closure in Ruby
def my_method(x)
yield(x) if block_given?
end
y = 10
my_method(6) { |x| puts "hello: #{x + y}" } #16
@ngpestelos
ngpestelos / block.rb
Created September 1, 2013 09:00
block example
def my_method(x)
yield(x) if block_given?
end
my_method(6) { |x| puts "hello: #{x}" }
@ngpestelos
ngpestelos / method_benchmark.rb
Created September 1, 2013 04:03
method_missing benchmark
# see Metaprogramming Ruby, p. 56
class String
def method_missing(method, *args)
method == :ghost_reverse ? reverse : super
end
end
require 'benchmark'
Benchmark.bm do |b|
b.report 'Normal method' do
@ngpestelos
ngpestelos / method_missing_2.rb
Created September 1, 2013 03:55
method_missing problem 2
class DataSource
def get_display_info(x)
"GeForce 3000"
end
def get_display_price(x)
100
end
def get_casing_info(x)
@ngpestelos
ngpestelos / method_missing_1.rb
Created September 1, 2013 03:44
method_missing problem 1
class Roulette
def method_missing(name, *args)
person = name.to_s.capitalize
3.times do
number = rand(10) + 1
puts "#{number}"
end
"#{person} got a #{number}" # Ruby gets confused here
end
end
@ngpestelos
ngpestelos / dynamic_proxy.rb
Created September 1, 2013 03:10
dynamic proxy example
class DataSource
def get_video_info(x)
"GeForce 3000"
end
def get_video_price(x)
100
end
def get_casing_info(x)