Yes I know You All Know This
However, there are some things which get mentioned over and over again, which I don’t understand, and which aren’t explained in any of my ‘beginner’ courses.
For example. Middleware. Rack. I’m not sure exactly where to get this kind of knowledge, but I keep stumbling across little pieces of the puzzle. Here, I’m putting my pieces together, so I don’t forget them, and so they can start painting the picture.
What is Middleware?
This Rails Cast gives a breakdown on the middleware that is in place with normal Rails apps, and even though what each of those pieces of middleware does was pretty much over my head, a few basic concepts came through, which I didn’t understand before watching this:
Middleware is what goes on between receiving a request from a browser and sending the response from your app.
- The list of the middleware will be different according to the framework you use, as well as your environment (e.g. development vs production)
- You can see the middleware in a rails app by going $ rake middleware
- This will give you a list of classes (and unexpectedly to the Rails Casts guy, also an object in one case)
- A request will run through each of these classes and then at the end finally run your applications routes
- Pieces of middleware might do things like “set the HTTP request method based on
_methodparameter” or “capture the remote IP address for later use”
Again, I don’t know exactly why these things are necessary, but I guess they are necessary to make your app run as expected.
Now, having said all that, the next thing to understand is “Rack”. For which I have these pieces of the puzzle:
What is Rack?
- “With Rack, you are officially leaving the world of web sites and entering the world of web apps. No longer are you sending static HTML files to the browser; you are programmatically building HTML on-the-fly to send to the browser.” Techiferous
- “Rack provides a minimal interface between webservers supporting Ruby and Ruby frameworks” http://rack.github.io/
- It contains a full stack of Middleware components
- “Using Rack Middleware you can build applications that directly interact with a HTTP requests environment and can be plugged in Rails, Sinatra, and many other Ruby based Frameworks.” A Rack Introduction
- Rack is one of those ‘bare minimum components’ that you need for creating modular web applications. A Rails app is actually a collection of Rack and Rails middleware components that work together to form the completed whole.
- In rails a .ru file is a rackup file
I can’t find one individual resource on understanding these things because I don’t understand a lot of what is said in those casts/blogs. However, I’ve rummaged around and found out enough for now to satisfy my curiosity.