Po dwóch miesiącach pracy w Three of Coins jako młodsza programistka postanowiłam podzielić się z uczestnikami/czkami WRUGa moją przygodą w cudownym świecie metaprogramowania.
module Vendorificator class Config #większość klasy pominięta def read_file(filename) pathname = Pathname.new(filename).cleanpath.expand_path @configuration[:vendorfile_path] = pathname @configuration[:root_dir] = if pathname.basename.to_s == 'vendor.rb' && pathname.dirname.basename.to_s == 'config' pathname.dirname.dirname else pathname.dirname end instance_eval(IO.read(filename), filename, 1) end end end
module Vendorificator class Config #większość klasy pominięta def method_missing(method_symbol, *args, &block) if modules.keys.include? method_symbol modules[method_symbol].new(environment, args.delete_at(0).to_s, *args, &block) else super end end end end
def method_missing(meth, *args, &block) #this is were the magic happens end + Unikamy niespodzianek (...w teorii) + definiujemy metody na bieżąco... - ...ale po kryjomu
Problemy dla osoby początkującej Alicja w krainie debuggingu, po złej stronie lustra Rubiowa czarna magia może przytłaczać Czy metaprogramowanie to lenistwo? Komu mogę ufać?
Szanse dla osoby początkującej Ćwiczę umysł Ambitne => motywujące Lepsze zrozumienie mechanizmów działania języka Przyspieszony kurs myślenia w Ruby... Pisanie aplikacji webowych nigdy nie było prostsze!