Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Designing and building software with Ruby on Rails

Designing and building software with Ruby on Rails

In this talk I explained how Ruby on Rails has changed the web and how it influenced other frameworks, also I detailed about the meaning of "On Rails" way and showed that Rails is a solution driven framework.

Rodrigo Boniatti

September 27, 2018
Tweet

More Decks by Rodrigo Boniatti

Other Decks in Technology

Transcript

  1. Designing and building
    software with Ruby on Rails

    View Slide

  2. Rodrigo Boniatti
    Developer at Codeminer 42

    @boniattirodrigo

    rodrigoboniatti.com

    View Slide

  3. View Slide

  4. Talk’s goals
    • How Rails has changed the web

    • On Rails way

    • Solution driven

    View Slide

  5. How Rails has changed
    the web

    View Slide

  6. Startup environment

    View Slide

  7. Agile movement
    Dave Thomas Martin Fowler

    View Slide

  8. View Slide

  9. Continuos integration

    View Slide

  10. On Rails way
    • Convention over configuration

    • Don’t repeat yourself (DRY)

    • Implicit instead of explicit

    • Opinionated

    View Slide

  11. Convention over
    configuration

    View Slide

  12. > rails g scaffold User name:string age:integer
    enabled:boolean

    View Slide

  13. invoke active_record
    create db/migrate/create_users.rb
    create app/models/user.rb
    invoke test_unit
    create test/models/user_test.rb
    create test/fixtures/users.yml
    invoke resource_route
    route resources :users
    invoke scaffold_controller
    create app/controllers/users_controller.rb
    invoke erb
    create app/views/users
    create app/views/users/index.html.erb
    create app/views/users/edit.html.erb
    create app/views/users/show.html.erb
    create app/views/users/new.html.erb
    create app/views/users/_form.html.erb
    invoke test_unit
    create test/controllers/users_controller_test.rb
    create test/system/users_test.rb

    View Slide

  14. invoke active_record
    create db/migrate/create_users.rb
    create app/models/user.rb
    invoke test_unit
    create test/models/user_test.rb
    create test/fixtures/users.yml

    View Slide

  15. invoke resource_route
    route resources :users

    View Slide

  16. invoke scaffold_controller
    create app/controllers/users_controller.rb
    invoke erb
    create app/views/users
    create app/views/users/index.html.erb
    create app/views/users/edit.html.erb
    create app/views/users/show.html.erb
    create app/views/users/new.html.erb
    create app/views/users/_form.html.erb
    invoke test_unit
    create test/controllers/users_controller_test.rb
    create test/system/users_test.rb

    View Slide

  17. class User < ActiveRecord::Base
    end

    View Slide

  18. User.create!(name: 'Rodrigo', age: 22, enabled: true)
    User.first.name
    => "Rodrigo"

    View Slide

  19. Rails.application.routes.draw do
    resources :users
    end

    View Slide

  20. class Post < ActiveRecord::Base
    has_many :comments
    belongs_to :author
    enum status: %i[draft review published]
    end

    View Slide

  21. post = Post.first
    post.draft?
    post.author_id

    View Slide

  22. Convention over configuration
    • Table name is plural

    • Primary key is called id

    • Column names are instance attributes

    View Slide

  23. Assets pipeline
    • Merge all files

    • Minification and compression

    • Transpiling

    View Slide

  24. View Slide

  25. Tooling

    View Slide

  26. View Slide

  27. RuboCop rules
    • Class length

    • Methods length

    • Parameters list

    • Unused variable

    • Indentation

    View Slide

  28. View Slide

  29. View Slide

  30. View Slide

  31. View Slide

  32. View Slide

  33. View Slide

  34. View Slide

  35. View Slide

  36. View Slide

  37. View Slide

  38. Inspirations

    View Slide

  39. Conclusion
    • Don't reinvent the wheel

    • Funny language

    • Plug and play

    View Slide

  40. Thanks ;)

    View Slide