Thor - RSLA - 13oct2009

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

    Thor - RSLA - 13oct2009 - Presentation Transcript

    1. Geradores de código com Thor @josevalim http://plataformatec.com.br jose@plataformatec.com.br Plataforma Tecnologia, José Valim 2009
    2. Quem sou? Plataforma Tecnologia, José Valim 2009
    3. Desenvolvedor líder na Plataforma Tecnologia Plataforma Tecnologia, José Valim 2009
    4. 22 anos, Engenheiro pela Escola Politécnica Plataforma Tecnologia, José Valim 2009
    5. Desenvolvedor ruby há quase 3 anos Plataforma Tecnologia, José Valim 2009
    6. Google Summer of Code Student e contribuidor ativo do Rails Core Plataforma Tecnologia, José Valim 2009
    7. Inherited Resources Plataforma Tecnologia, José Valim 2009
    8. Inherited Resources Rails Footnotes Plataforma Tecnologia, José Valim 2009
    9. Inherited Resources Rails Footnotes Remarkable Plataforma Tecnologia, José Valim 2009
    10. Inherited Resources Rails Footnotes Remarkable Formtastic Plataforma Tecnologia, José Valim 2009
    11. O que está errado com os geradores do Rails 2.x? Plataforma Tecnologia, José Valim 2009
    12. script/generate scaffold Plataforma Tecnologia, José Valim 2009
    13. script/generate scaffold ActiveRecord TestUnit ERB Plataforma Tecnologia, José Valim 2009
    14. script/generate rspec_scaffold Plataforma Tecnologia, José Valim 2009
    15. script/generate rspec_scaffold ActiveRecord Rspec ERB Plataforma Tecnologia, José Valim 2009
    16. script/generate dm_scaffold Plataforma Tecnologia, José Valim 2009
    17. script/generate dm_scaffold DataMapper TestUnit ERB Plataforma Tecnologia, José Valim 2009
    18. script/generate dm_rspec_scaffold Plataforma Tecnologia, José Valim 2009
    19. script/generate dm_rspec_scaffold DataMapper Rspec ERB Plataforma Tecnologia, José Valim 2009
    20. Agnosticismo? Plataforma Tecnologia, José Valim 2009
    21. Remarkable + Inherited Resources + Formtastic Plataforma Tecnologia, José Valim 2009
    22. Remarkable + Inherited Resources + Formtastic = Plataforma Tecnologia, José Valim 2009
    23. Remarkable + Inherited Resources + Formtastic = script/generate remarkable_inherited_formta stic_scaffold Plataforma Tecnologia, José Valim 2009
    24. Remarkable + Inherited Resources + Formtastic = script/generate remarkable_inherited_formta stic_scaffold FAIL? Plataforma Tecnologia, José Valim 2009
    25. script/generate nifty_scaffold script/generate dry_scaffold Plataforma Tecnologia, José Valim 2009
    26. Pouca reutilização de código Plataforma Tecnologia, José Valim 2009
    27. Sem divisão de responsabilidades Plataforma Tecnologia, José Valim 2009
    28. Plataforma Tecnologia, José Valim 2009
    29. Por quê Thor? Plataforma Tecnologia, José Valim 2009
    30. class AppGenerator < Thor::Group def create_app_folders empty_directory “app/models” empty_directory “app/controllers” end def copy_config_files copy_file “config/routes.rb” end end Plataforma Tecnologia, José Valim 2009
    31. class AppGenerator < Thor::Group def create_app_folders empty_directory “app/models” empty_directory “app/controllers” end def copy_config_files copy_file “config/routes.rb” end end Plataforma Tecnologia, José Valim 2009
    32. class AppGenerator < Thor::Group def create_app_folders empty_directory “app/models” empty_directory “app/controllers” end def copy_config_files copy_file “config/routes.rb” end end Plataforma Tecnologia, José Valim 2009
    33. Execute tudo... AppGenerator.start Plataforma Tecnologia, José Valim 2009
    34. ou selecione! app_tasks = AppGenerator.new app_tasks.create_app_folders app_tasks.copy_config_files Plataforma Tecnologia, José Valim 2009
    35. Herança Plataforma Tecnologia, José Valim 2009
    36. module Rails::Generators class ScaffoldGenerator < ResourceGenerator # generation end end Plataforma Tecnologia, José Valim 2009
    37. Argumentos Plataforma Tecnologia, José Valim 2009
    38. script/generate scaffold User name:string --no-layout -o datamapper -t rspec Plataforma Tecnologia, José Valim 2009
    39. self.class_name script/generate scaffold User name:string --no-layout -o datamapper -t rspec Plataforma Tecnologia, José Valim 2009
    40. self.attributes script/generate scaffold User name:string --no-layout -o datamapper -t rspec Plataforma Tecnologia, José Valim 2009
    41. Opções Plataforma Tecnologia, José Valim 2009
    42. script/generate scaffold User name:string --no-layout -o datamapper -t rspec Plataforma Tecnologia, José Valim 2009
    43. script/generate scaffold User name:string --no-layout -o datamapper -t rspec self.options[:orm] #=> “datamapper” Plataforma Tecnologia, José Valim 2009
    44. script/generate scaffold User name:string --no-layout -o datamapper -t rspec self.options.layout? #=> false Plataforma Tecnologia, José Valim 2009
    45. :type => :string --orm=activerecord Plataforma Tecnologia, José Valim 2009
    46. :type => :numeric --rails=3.0 Plataforma Tecnologia, José Valim 2009
    47. :type => :boolean --layout --no-helpers Plataforma Tecnologia, José Valim 2009
    48. :type => :array --actions=index new create Plataforma Tecnologia, José Valim 2009
    49. :type => :hash --actions=name:string age:index Plataforma Tecnologia, José Valim 2009
    50. :required, :desc, :optional Plataforma Tecnologia, José Valim 2009
    51. Invocações Plataforma Tecnologia, José Valim 2009
    52. class ResourceGenerator < Thor::Group def run_dependencies invoke ModelGenerator invoke ControllerGenerator invoke “testunit:resource” end end Plataforma Tecnologia, José Valim 2009
    53. class ResourceGenerator < Thor::Group def run_dependencies invoke ModelGenerator invoke ControllerGenerator invoke “testunit:resource” end end Plataforma Tecnologia, José Valim 2009
    54. invoke ModelGenerator Plataforma Tecnologia, José Valim 2009
    55. invoke ModelGenerator ModelGenerator.start Plataforma Tecnologia, José Valim 2009
    56. invoke ModelGenerator != ModelGenerator.start Plataforma Tecnologia, José Valim 2009
    57. Shell Plataforma Tecnologia, José Valim 2009
    58. Gerencia input e output Plataforma Tecnologia, José Valim 2009
    59. Thor::Shell::Basic Plataforma Tecnologia, José Valim 2009
    60. Thor::Shell::Basic Apenas para Windows Plataforma Tecnologia, José Valim 2009
    61. Thor::Shell::Color Plataforma Tecnologia, José Valim 2009
    62. Thor::Shell::Web Plataforma Tecnologia, José Valim 2009
    63. Thor::Shell::Web ? Plataforma Tecnologia, José Valim 2009
    64. Plataforma Tecnologia, José Valim 2009
    65. Qual a diferença entre geradores de código e tarefas (como rake)? Plataforma Tecnologia, José Valim 2009
    66. Geradores de código são um grupo de tarefas Plataforma Tecnologia, José Valim 2009
    67. class Alphabet < Thor def a print :a end def b print :b end end $ thor alphabet:a #=> “a” $ thor alphabet:b #=> “b” Plataforma Tecnologia, José Valim 2009
    68. class Alphabet < Thor def a print :a end def b print :b end end $ thor alphabet:a #=> “a” $ thor alphabet:b #=> “b” Plataforma Tecnologia, José Valim 2009
    69. class Alphabet < Thor def a print :a end def b print :b end end $ thor alphabet:a #=> “a” $ thor alphabet:b #=> “b” Plataforma Tecnologia, José Valim 2009
    70. class Alphabet < Thor::Group def a print :a end def b print :b end end $ thor alphabet #=> “ab” Plataforma Tecnologia, José Valim 2009
    71. class Alphabet < Thor::Group def a print :a end def b print :b end end $ thor alphabet #=> “ab” Plataforma Tecnologia, José Valim 2009
    72. Thor Plataforma Tecnologia, José Valim 2009
    73. Thor = Plataforma Tecnologia, José Valim 2009
    74. Thor = Rake Plataforma Tecnologia, José Valim 2009
    75. Thor = Rake + Sake Plataforma Tecnologia, José Valim 2009
    76. Thor = Rake + Sake + Rubigen Plataforma Tecnologia, José Valim 2009
    77. Thor = Rake + Sake + Rubigen + RailsTemplates Plataforma Tecnologia, José Valim 2009
    78. Thor::Actions == RailsTemplates Plataforma Tecnologia, José Valim 2009
    79. create_file “users_helper.rb”, <<-END module UsersHelper end END Plataforma Tecnologia, José Valim 2009
    80. copy_file “doc/README”, “doc/README” copy_file “doc/README” Plataforma Tecnologia, José Valim 2009
    81. Thor.source_root copy_file “doc/README”, “doc/README” copy_file “doc/README” Plataforma Tecnologia, José Valim 2009
    82. Dir.pwd copy_file “doc/README”, “doc/README” copy_file “doc/README” Plataforma Tecnologia, José Valim 2009
    83. get “http://pastie.org/2.txt”, “pastie.rb” get “http://pastie.org/2.txt” do |content| content =~ /class (w)+/ “#{$1 || 'content'}.rb” end Plataforma Tecnologia, José Valim 2009
    84. template “doc/README”, “doc/README” template “doc/README.tt” Plataforma Tecnologia, José Valim 2009
    85. chmod “script/*”, 755 Plataforma Tecnologia, José Valim 2009
    86. prepend_file “environments/test.rb” “config.gem "rspec"” prepend_file “environments/test.rb” do “config.gem "rspec"” end Plataforma Tecnologia, José Valim 2009
    87. append_file “environments/test.rb” “config.gem "rspec"” append_file “environments/test.rb” do “config.gem "rspec"” end Plataforma Tecnologia, José Valim 2009
    88. flag = "Rails::Initializer.run do |config|n" inject_into_file "config/environment.rb", "config.gem :thor", :after => flag Plataforma Tecnologia, José Valim 2009
    89. inject_into_class “users_controller.rb” UsersController, “before_filter :authenticate” Plataforma Tecnologia, José Valim 2009
    90. remove_file “doc/README” Plataforma Tecnologia, José Valim 2009
    91. empty_directory “doc” Plataforma Tecnologia, José Valim 2009
    92. directory “script”, “script” directory “script” Plataforma Tecnologia, José Valim 2009
    93. inside “doc” do copy_file “README” end Plataforma Tecnologia, José Valim 2009
    94. apply "http://gist.github.com/103208.txt" Plataforma Tecnologia, José Valim 2009
    95. run “ln -s ~/edge rails” Plataforma Tecnologia, José Valim 2009
    96. Actions específicas do Rails em: Rails::Generators::Actions Plataforma Tecnologia, José Valim 2009
    97. Thor unifica APIs de geradores de código, tarefas e templates do Rails Plataforma Tecnologia, José Valim 2009
    98. Rails::Generators Plataforma Tecnologia, José Valim 2009
    99. module Rails::Generators class ControllerGenerator < NamedBase argument :actions, :type => :array, :default => [] check_class_collision :suffix => "Controller" def create_controller_files destination = File.join('app/controllers', class_path, "#{file_name}_controller.rb") template 'controller.rb', destination end hook_for :template_engine, :test_framework, :helper end end Plataforma Tecnologia, José Valim 2009
    100. module Rails::Generators class ControllerGenerator < NamedBase argument :actions, :type => :array, :default => [] check_class_collision :suffix => "Controller" def create_controller_files destination = File.join('app/controllers', class_path, "#{file_name}_controller.rb") template 'controller.rb', destination end hook_for :template_engine, :test_framework, :helper end end Plataforma Tecnologia, José Valim 2009
    101. module Rails::Generators class ControllerGenerator < NamedBase argument :actions, :type => :array, :default => [] check_class_collision :suffix => "Controller" def create_controller_files destination = File.join('app/controllers', class_path, "#{file_name}_controller.rb") template 'controller.rb', destination end hook_for :template_engine, :test_framework, :helper end end Plataforma Tecnologia, José Valim 2009
    102. module Rails::Generators class ControllerGenerator < NamedBase argument :actions, :type => :array, :default => [] check_class_collision :suffix => "Controller" def create_controller_files destination = File.join('app/controllers', class_path, "#{file_name}_controller.rb") template 'controller.rb', destination end hook_for :template_engine, :test_framework, :helper end end Plataforma Tecnologia, José Valim 2009
    103. module Rails::Generators class ControllerGenerator < NamedBase argument :actions, :type => :array, :default => [] check_class_collision :suffix => "Controller" def create_controller_files destination = File.join('app/controllers', class_path, "#{file_name}_controller.rb") template 'controller.rb', destination end hook_for :template_engine, :test_framework, :helper end end Plataforma Tecnologia, José Valim 2009
    104. module Rails::Generators class ControllerGenerator < NamedBase argument :actions, :type => :array, :default => [] check_class_collision :suffix => "Controller" def create_controller_files destination = File.join('app/controllers', class_path, "#{file_name}_controller.rb") template 'controller.rb', destination end hook_for :template_engine, :test_framework, :helper end end Plataforma Tecnologia, José Valim 2009
    105. module Rails::Generators class ControllerGenerator < NamedBase argument :actions, :type => :array, :default => [] check_class_collision :suffix => "Controller" def create_controller_files destination = File.join('app/controllers', class_path, "#{file_name}_controller.rb") template 'controller.rb', destination end hook_for :template_engine, :test_framework, :helper end end Plataforma Tecnologia, José Valim 2009
    106. module Rails::Generators class ControllerGenerator < NamedBase argument :actions, :type => :array, :default => [] check_class_collision :suffix => "Controller" def create_controller_files destination = File.join('app/controllers', class_path, "#{file_name}_controller.rb") template 'controller.rb', destination end hook_for :template_engine, :test_framework, :helper end end Plataforma Tecnologia, José Valim 2009
    107. module Rails::Generators class ControllerGenerator < NamedBase argument :actions, :type => :array, :default => [] check_class_collision :suffix => "Controller" def create_controller_files destination = File.join('app/controllers', class_path, "#{file_name}_controller.rb") template 'controller.rb', destination end hook_for :template_engine, :test_framework, :helper end end Plataforma Tecnologia, José Valim 2009
    108. module Rails::Generators class ControllerGenerator < NamedBase argument :actions, :type => :array, :default => [] check_class_collision :suffix => "Controller" def create_controller_files destination = File.join('app/controllers', class_path, "#{file_name}_controller.rb") template 'controller.rb', destination end hook_for :template_engine, :test_framework, :helper end end Plataforma Tecnologia, José Valim 2009
    109. hook_for :test_framework Plataforma Tecnologia, José Valim 2009
    110. hook_for :test_framework --test_framework=rspec Plataforma Tecnologia, José Valim 2009
    111. hook_for :test_framework --test_framework=rspec invoke “rspec:controller” Plataforma Tecnologia, José Valim 2009
    112. Thorfile Plataforma Tecnologia, José Valim 2009
    113. Thor::RakeCompat Plataforma Tecnologia, José Valim 2009
    114. require File.join(File.dirname(__FILE__), 'config', 'boot') require 'rake/testtask' require 'rake/rdoctask' require 'thor/rake_compat' class Default < Thor include Thor::RakeCompat require 'rails/tasks' end Plataforma Tecnologia, José Valim 2009
    115. require File.join(File.dirname(__FILE__), 'config', 'boot') require 'rake/testtask' require 'rake/rdoctask' require 'thor/rake_compat' class Default < Thor include Thor::RakeCompat require 'rails/tasks' end Plataforma Tecnologia, José Valim 2009
    116. require File.join(File.dirname(__FILE__), 'config', 'boot') require 'rake/testtask' require 'rake/rdoctask' require 'thor/rake_compat' class Default < Thor include Thor::RakeCompat require 'rails/tasks' end Plataforma Tecnologia, José Valim 2009
    117. require File.join(File.dirname(__FILE__), 'config', 'boot') require 'rake/testtask' require 'rake/rdoctask' require 'thor/rake_compat' class Default < Thor include Thor::RakeCompat require 'rails/tasks' end Plataforma Tecnologia, José Valim 2009
    118. Show me the code! Plataforma Tecnologia, José Valim 2009
    119. ?! @josevalim http://plataformatec.com.br jose@plataformatec.com.br Plataforma Tecnologia, José Valim 2009
    120. blog.plataformatec.com.br @josevalim http://plataformatec.com.br jose@plataformatec.com.br Plataforma Tecnologia, José Valim 2009

    + Plataforma TecnologiaPlataforma Tecnologia, 1 month ago

    custom

    435 views, 1 favs, 2 embeds more stats

    José Valim talks in portuguese about Code Generati more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 435
      • 227 on SlideShare
      • 208 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 7
    Most viewed embeds
    • 203 views on http://blog.plataformatec.com.br
    • 5 views on http://feeds.feedburner.com

    more

    All embeds
    • 203 views on http://blog.plataformatec.com.br
    • 5 views on http://feeds.feedburner.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories