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 / class_variables.rb
Created September 14, 2013 03:25
class variables
# see Metaprogramming Ruby, p. 97
class C
@@v = 1
end
class D < C
def read; @@v; end
end
@ngpestelos
ngpestelos / civ2.rb
Created September 14, 2013 02:43
class instance variables, part 2
class MyClass
@my_var = 1
def self.read; @my_var; end
def write; @my_var = 2; end
def read; @my_var; end
end
obj = MyClass.new
obj.write
@ngpestelos
ngpestelos / civ.rb
Created September 14, 2013 02:39
class instance variables
class MyClass
@my_var = 1
def self.read
@my_var
end
end
@ngpestelos
ngpestelos / redflag.rb
Last active December 22, 2015 23:29
red flag (simple event notification DSL)
# see Metaprogramming Ruby, p. 89
lambda {
setups = []
events = {}
Kernel.send :define_method, :event do |name, &block|
events[name] = block
end
@ngpestelos
ngpestelos / test_events.rb
Created September 13, 2013 06:39
test events script
# see Metaprogramming Ruby, p. 86
event "the sky is falling" do
@sky_height < 300
end
event "it's getting closer" do
@sky_height < @mountains_height
end
@ngpestelos
ngpestelos / rvm_bootstrap.sh
Created September 13, 2013 06:01
scripting rvm
# loads RVM into a shell session
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then
# try to load from a user install
source "$HOME/.rvm/scripts/rvm"
elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then
# try to load the system rvm
source "/usr/local/rvm/scripts/rvm"
else
printf "ERROR: An rvm installation was not found.\n"
@ngpestelos
ngpestelos / instance_eval.rb
Last active December 22, 2015 18:49
instance_eval
# see Metaprogramming Ruby, p. 74
class MyClass
def initialize
@v = 1
end
end
obj = MyClass.new
obj.instance_eval do
@ngpestelos
ngpestelos / storbox.rb
Created September 6, 2013 05:28
Storbox
def fetch_sitelink_promotions(store)
[]
end
@ngpestelos
ngpestelos / eod_specs.md
Last active December 22, 2015 08:09
EoD Specs

Sample Project: End of Day Application

I usually write progress reports at the end of the work day (as a summary of what I did for a project):

Other names for this application:

  • work log
  • activity stream

Examples

@ngpestelos
ngpestelos / shared_scopes.rb
Created September 3, 2013 12:44
shared scopes
# see Metaprogramming Ruby, p. 73
def define_methods
shared = 0
Kernel.send :define_method, :counter do
shared
end
Kernel.send :define_method, :inc do |x|
shared += x