385 Rack and Middlewares

Goal of this lesson is to understand what middlewares in Rack are good for.


Start with these articles:

You should be able to answer the following questions:

  • What is Rack?
  • How does Rack relate to Ruby on Rails?
  • What is Rack middleware?
  • What are some …

397 Rails: Sending e-mail



  • In MovieDB, whenever someone creates a movie, send a notification to
  • Can you attach a text file (any content) to the e-mail?
  • Can you write a Cucumber feature for this?

940 Persisting trees

Storing a tree

For each movie in MovieDB, we want to track which other movie it was inspired by. For example:

  • "Interstellar was inspired by 2001"
  • "Inception was inspired by The Matrix"

Start by adding a field Movie#inspiration_id. In the movie form, I should be able to select the inspirating movie.

The list should:

  • include all the movies that were released in previous years
  • not include the movie itself
  • not include a movie that was itself inspired by the movie that is being edited.


In t…

395 Background processing

Some tasks in a web application are better not done live when a user request a page, but in the background. Examples are

  • longer running tasks
  • tasks that are not tied to user interaction
  • tasks that can fail, and may need to be retried

Our two main mechanisms for background processing are

Learn about cronjobs

  • Read [HowTo: Add Jobs To cron Under Linux or UNIX?](http:…

400 Buzzwords and staying up to date

Web technology is a very broad field and you cannot be an expert in all aspects.

However, it is useful to have at least heard of a few common terms and buzzwords, so that you don't seem uninformed when when talking to a client or other developers.

Get an overview

Search the Internet for each of the following terms. Only take a couple of minutes for each and don't get into too much detail, but do get a rough understand what each of these terms mean:

  • Single Page Application
  • Software as a Service
  • React
  • node.js
  • NoSQL
  • Grap…

980 CSS frameworks and libraries


  • Learn what Compass is
    • Look at a few projects and see what parts of Compass we use and what parts we don't
    • Look at a few projects that don't use Compass and understand how a mixins.sass or helpers.sass serves a similar purpose
  • What is Bootstrap?
    • Learn some pros and cons of using Bootstrap or other CSS frameworks
    • What parts of Bootstrap do we use? What parts don't we use?


Create a branch in your MovieDB repository.

Migrate your layout and one screen to Bootstrap. It will look like a …

396 Internationalization



  • Estimate localization for MovieDB.
  • Together with your mentor, select some localization features to implement. Implement them.
  • Compare your estimate with the actual time it took you.

910 Rake

  • What is rake good for?
  • Take a look at some of the Rake tasks that Rails gives you (rake -T within a Rails project)
  • Find the code that defines the rake stats task in the Rails gems
  • What are some ways how a Rake task can execute another task?
  • What does it mean if a Rake task "depends" on another task? E.g. understand what it means for a Rake task within a Rails app to depend on :environment.
  • Write a Rake task rake public_methods that lists all public methods of all models in app/models.
    • Hint: Don't manually parse th…

990 Static site generators


Talk with a colleague and find out why we're using building some of our sites using static site generators instead of Rails.

You should talk about:

  • Ease of development
  • Security issues and maintenance costs

Read through the Middleman docs:

  • What can it do?
  • What can't it do?
  • What parts do you know from Rails?


  • Checkout the repo for the makandra blog
  • Start the preview server
  • Make some changes, review them on localhost:4567…
64 cards