About this Book

This is a textbook for the second year of a computer science or "media informatics" degree program. It builds on Web Development (in german).

This book is not a self-contained work: There are great resources for learning about backend development with Rails and Node - this book tries to use these resources, and bind them together into a coherent study plan.

It was written and published by Brigitte Jellinek in the hope that it will be useful to lecturers and students in educational institutions as well as to self-directed learners on the internet.


On Backend Development

In this course we will learn backend development with Ruby on Rails and with node.js.

There are many frameworks in different languages that could also be used. If you learn Laravel (with PHP) or Django (with Python) or Play (with Java) one of many other frameworks you are doing just fine.

We decided on Ruby on Rails in 2008 because the framework seemed well rounded and modern then, and we have not been disappointed. Rails has not stopped innovating and improving. In 2024 we can still recommend it both for learning and for building production ready software. In 2013 we added node.js to cover different aspects of backend development.

Ruby on Rails

Ruby Commandline

The essential ruby you need to know to understand rails

Models and ActiveRecord

How does Rails use the database? Use the rails console to find out.

Database and Migrations

How does Rails use the database? How are models and database tables related?

Associations and Validations

How are relations between models implemented? How can we put restrictions on the data?

Routing, View and Controller

How Rails gets from a HTTP Request to a finishd HTML document

Simple Authentication

How do we implement "logging in" over statless HTTP? Sessions in rails. Logging in with Passwords or with another service like github, twitter, facebook (using devise and omniauth)

The Asset Pipeline and Importmaps

How CSS, Fonts, Images and JavaScript are prepared for publishing

Getting started with Testing

Write your first unit tests and integration tests for Rails

Refactoring Rails

How to improve your code in a systematic way.

Deploy to PAAS

How to deploy a web app to the cloud with "Platform As A Service"

Ruby Gems for your Rails Project

How bundler helps with dependencies, and some gems you might need for your first Rails project

Deploying Rails

Several options for deploying a Rails App

Ruby on Rails - Advanced Topics

Deploy to PAAS

How to deploy a web app to the cloud with "Platform As A Service"

REST API

Offer an REST stype API as part of your Rails app

GraphQL API

Offer an GraphQL API as part of your Rails app

Websocket in Rails

Websockets offer a permanent connection between client and server. With Actioncable you can use websockets for publish-subscribe communication

Jobs and Tasks in Rails

Your web application will need code that is run outside the HTTP Request-Response cycle. Learn about Jobs that run automatically and Tasks that you can start from the commandline

Rails Security

How Rails framework helps with web security

Overarching Concerns

Security

Some Security Aspects of using Rails, Node and Next.js

Advanced Authentication

Different Scenarios demand different authentication methods - Web Auth, OAuth, JWT,...

Caching

Speed up your web app through caching

Advanced Testing

More testing with test doubles and a headless browser

Internationalization (I18n)

How to prepare you app for many languages, many countries

Git Rebasing

How to work with feature branches and rebasing in git

Nodes.js

Node vs. Rails

What are the differences, and why should I learn both?

Node Basics

Program your first web server in node

Node Websockets

Program a chat app with socket.io

Node Web App

write a web app in node with express

Scaling Node

how to scale node up with cluster.js

Next.js

Next.js

A Framework for React, including Backend Concerns