View commitPushAndPublishToNpm.sh
git commit -m “Release 0.0.1”
git tag v0.0.1
git push origin master --tags
npm publish
View 0. Ruby Meta Programming - spells covered.md
  • Dynamic Dispatch
  • Dynamic Method
  • Ghost Methods
  • Dynamic Proxies
  • Blank Slate
  • Kernel Method
  • Flattening the Scope (aka Nested Lexical Scopes)
  • Context Probe
  • Class Eval (not really a 'spell' more just a demonstration of its usage)
  • Class Macros
View example.rb
# module
module Findable
def find_by_name(name)
# find something
end
end
# Class
class Klass
# class stuff
View atbash.rb
class Atbash
LETTERS = %w(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z)
NUMBERS = %w(0 1 2 3 4 5 6 7 8 9)
PUNCTUATION = [' ', ',', '.']
def self.encode(str)
cipher = []
str.chars.each do |char|
next if PUNCTUATION.include?(char)
View hash_iteration_with_index.rb
months = { January: 31, February: 28, March: 31, April: 30, May: 31, June: 30, July: 31, August: 31, September: 30, October: 31, November: 30, December: 31 }
months.each_with_index do |(key, val), i|
puts "#{i}: #{key} has #{val} days"
end
View assign_value.rb
lang = 'en'
welcome_msg = case lang
when 'en' then 'welcome'
when 'de' then 'willkommen'
when 'fr' then 'bienvenue'
when 'de' then 'bienvenida'
else 'yo'
end
View example.rb
def yo
if block_given?
yield
else
puts "No block :-("
end
end
yo # => No block :-(
yo { puts "Yo man" } # => Yo man
View example.rb
def hello(name = "world")
puts "hello #{name}!"
end
hello # => hello world!
hello('John') # => hello John!
View comparison_and_ranges.rb
(1..10) === 4 # => true
(1...10) === 10 # => false
View example.rb
name = 'John'
# default acts as double-quoted string
puts <<heredoc
Hello #{name}
other line 1,
other line 2.
heredoc
# double-quoted string