Slide 1

Slide 1 text

Carlos Antonio @cantoniodasilva blog.plataformatec.com.br RAILTIES OU COMO DESENVOLVER PLUGINS/GEMS PARA RAILS Sunday, November 6, 11

Slide 2

Slide 2 text

Carlos Antonio @cantoniodasilva blog.plataformatec.com.br $ WHOAMI Sunday, November 6, 11

Slide 3

Slide 3 text

Carlos Antonio @cantoniodasilva blog.plataformatec.com.br CARLOS ANTONIO DA SILVA @cantoniodasilva Sunday, November 6, 11

Slide 4

Slide 4 text

Carlos Antonio @cantoniodasilva blog.plataformatec.com.br BSI NA UNIDAVI - RIO DO SUL GP NO SENAC - RIO DO SUL/ FLORIANÓPOLIS Sunday, November 6, 11

Slide 5

Slide 5 text

Carlos Antonio @cantoniodasilva blog.plataformatec.com.br TRABALHO NA Sunday, November 6, 11

Slide 6

Slide 6 text

Carlos Antonio @cantoniodasilva blog.plataformatec.com.br DEVISE Sunday, November 6, 11

Slide 7

Slide 7 text

Carlos Antonio @cantoniodasilva blog.plataformatec.com.br SIMPLE_FORM Sunday, November 6, 11

Slide 8

Slide 8 text

Carlos Antonio @cantoniodasilva blog.plataformatec.com.br RESPONDERS Sunday, November 6, 11

Slide 9

Slide 9 text

Carlos Antonio @cantoniodasilva blog.plataformatec.com.br Railties ? Sunday, November 6, 11

Slide 10

Slide 10 text

Carlos Antonio @cantoniodasilva blog.plataformatec.com.br Railties WTF??? ? Sunday, November 6, 11

Slide 11

Slide 11 text

Carlos Antonio @cantoniodasilva blog.plataformatec.com.br Railties ? Application Initialization Engine Generators Sunday, November 6, 11

Slide 12

Slide 12 text

Carlos Antonio @cantoniodasilva blog.plataformatec.com.br Railties ? Application Initialization Engine Generators HOOKS Sunday, November 6, 11

Slide 13

Slide 13 text

Carlos Antonio @cantoniodasilva blog.plataformatec.com.br Railties ? Hooks GENERATORS module FooBar class Railtie < Rails::Railtie config.generators.orm = :foo_bar end end Sunday, November 6, 11

Slide 14

Slide 14 text

Carlos Antonio @cantoniodasilva blog.plataformatec.com.br Railties ? Hooks RAKE TASKS module FooBar class Railtie < Rails::Railtie rake_tasks do load 'foo_bar/foo.rake' end end end Sunday, November 6, 11

Slide 15

Slide 15 text

Carlos Antonio @cantoniodasilva blog.plataformatec.com.br Railties ? Hooks INIT module FooBar class Railtie < Rails::Railtie # initialization hooks config.before_configuration {} config.before_eager_load {} config.before_initialize {} config.after_initialize {} config.to_prepare {} end end Sunday, November 6, 11

Slide 16

Slide 16 text

Carlos Antonio @cantoniodasilva blog.plataformatec.com.br Railties ? Hooks INIT module FooBar class Railtie < Rails::Railtie initializer 'foo_bar.do_whatever' do |app| puts "I'm initializing!" # load your stuff here end end end Sunday, November 6, 11

Slide 17

Slide 17 text

Carlos Antonio @cantoniodasilva blog.plataformatec.com.br ? FRAMEWORK LOADING ActiveSupport.on_load(:active_record) do include FooBar::ActiveRecordExtensions end Sunday, November 6, 11

Slide 18

Slide 18 text

Carlos Antonio @cantoniodasilva blog.plataformatec.com.br E O QUE EU FAÇO COM ESSE NEGÓCIO DE FRAMEWORK LOADING? Sunday, November 6, 11

Slide 19

Slide 19 text

Carlos Antonio @cantoniodasilva blog.plataformatec.com.br Railties ? Hooks INIT module FooBar class Railtie < Rails::Railtie initializer 'foo_bar.do_whatever' do |app| ActiveSupport.on_load(:active_record) do include FooBar::ActiveRecordExtensions end end end end Sunday, November 6, 11

Slide 20

Slide 20 text

Carlos Antonio @cantoniodasilva blog.plataformatec.com.br EXEMPLO REAL??? Sunday, November 6, 11

Slide 21

Slide 21 text

Carlos Antonio @cantoniodasilva blog.plataformatec.com.br ? module Responders autoload :FlashResponder, 'responders/flash_responder' autoload :HttpCacheResponder, 'responders/http_cache_responder' autoload :CollectionResponder, 'responders/collection_responder' require 'responders/controller_method' class Railtie < ::Rails::Railtie config.responders = ActiveSupport::OrderedOptions.new config.generators.scaffold_controller = :responders_controller # Add load paths straight to I18n, so engines and application can overwrite it. require 'active_support/i18n' I18n.load_path << File.expand_path('../responders/locales/en.yml', __FILE__) initializer "responders.flash_responder" do |app| if app.config.responders.flash_keys Responders::FlashResponder.flash_keys = app.config.responders.flash_keys end end end end Sunday, November 6, 11

Slide 22

Slide 22 text

@cantoniodasilva blog.plataformatec.com.br Obrigado ! ?! Sunday, November 6, 11