Git Product home page Git Product logo

layered-design-for-ruby-on-rails-applications's Introduction

Layered Design for Ruby on Rails Applications

Layered Design for Ruby on Rails Applications, published by Packt

Layered Design for Ruby on Rails Applications

This is the code repository for Layered Design for Ruby on Rails Applications, published by Packt.

Discover practical design patterns for maintainable web applications.

What is this book about?

Ruby on Rails is an open-source framework for building web applications from scratch and develop a full-featured product. This book helps you keep the code maintainable while working on a Rails application by demonstrating the useful design patterns and exploring the common code abstractions.

This book covers the following exciting features:

  • Discover Rails' core components and its request/response cycle
  • Understand Rails' convention-over-configuration principle and its impact on development
  • Explore patterns for flexibility, extensibility, and testability in Rails
  • Identify and address Rails’ anti-patterns for cleaner code
  • Implement design patterns for handling bloated models and messy views
  • Expand from mailers to multi-channel notification deliveries
  • Explore different authorization models and layers
  • Use a class-based approach to configuration in Rails

If you feel this book is for you, get your copy today!

https://www.packtpub.com/

Instructions and navigations

All of the code is organized into folders. For example, Chapter02.

The lib/ folder contains utilities to run code snippets. Most chapter folders also contain the prelude.rb file with the environment configuration for the examples (dependecies, Rails application configuration, database schema extensions, etc).

You can run any example using the ruby command, for example:

$ ruby Chapter01/01-request-gc-stats.rb

Total allocations: 18573

Using examples runner

You can also run examples using a specific runner scripts, which prints the source code along with intermediate return values in addition to executing the code:

ruby run.rb Chapter01/01-request-gc-stats.rb

Here is an example output of the runner:

Runner demo

Running Rails tasks

You can run Rails (Rake) tasks using the bin/rails executable:

$ bin/rails middleware

use ActionDispatch::HostAuthorization
use Rack::Sendfile
...
use Rack::TempfileReaper
run App.routes

You can also load the application modification for a particular chapter by specifying the CHAPTER env var:

$ CHAPTER=2 bin/rails routes

...
         books GET    /books(.:format)
    books#index
    categories GET    /categories(:format)
    categories#index
      category GET    /categories:id(.:format)
    categories#show

Finally, you can run a Rails server for a particular chapter (some chapters contain controllers and views examples). For example, for Chapter 7:

$ CHAPTER=7 bin/rails rails s

[2023-01-30 22:45:37] INFO  WEBrick 1.8.1
[2023-01-30 22:45:37] INFO  ruby 3.2.0 (2022-12-25) [aarch64-linux]
[2023-01-30 22:45:37] INFO  WEBrick::HTTPServer#start: pid=1266 port=3000
...

Now you can open a web server at localhost:3000/users and play with the auto-generated Rails CRUD interface for users.

Software and Hardware List

Chapter Software required OS required
1-15 Ruby 3.2 Any OS that runs Ruby

Related products

Get to Know the Author

Vladimir Dementyev is a principal backend engineer at Evil Martians, a product development consultancy from Earth, focusing on building maintainable web applications and developers’ productivity. He is the creator of popular open source tools, such as AnyCable and TestProf, and a contributor to many other open source projects, including Ruby on Rails and Ruby itself. Vladimir plays an active role in the Ruby community through his code contributions and by speaking at conferences and sharing his passion for coding via articles and blog posts. For his contributions to the Ruby ecosystem, Vladimir was awarded the Fukuoka Ruby Award in 2021 and the Ruby Hero Russia Award in 2017.

layered-design-for-ruby-on-rails-applications's People

Contributors

markdsouzapackt avatar palkan avatar simranudasi23 avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.