Your first Sinatra app
Let’s get started looking at Sinatra.
Make sure you have the Sinatra gem installed. Use
gem list sinatra to
check if it’s there. If it’s not install it using
gem install sinatra.
Now, let’s steal the intro example from their homepage, and adopt it. Make a
cd into it, create a file
monstas.rb and add this
require "sinatra" get "/" do "OMG, hello Ruby Monstas!" end
Now you can run your little app using
ruby monstas.rb. You should see
something like this:
$ ruby monstas.rb [2015-05-15 21:37:41] INFO WEBrick 1.3.1 [2015-05-15 21:37:41] INFO ruby 2.2.1 (2015-02-26) [x86_64-darwin14] == Sinatra (v1.4.6) has taken the stage on 4567 for development with backup from WEBrick [2015-05-15 21:37:41] INFO WEBrick::HTTPServer#start: pid=27182 port=4567
Again, there are lots of version numbers, that we can ignore, and it
also tells us the port that it’s running on. This time it’s
4567. For some
reason Sinatra finds it important to use a different port number
So let’s point the browser to http://localhost:4567.
You should see something like this:
That was easy, wasn’t it.
If you’ve read the chapters about Rack it is interesting to know
that Sinatra uses Rack under the hood, but it deals with the nitty gritty
details of looking at the
REQUEST_PATH for you.
It allows you to use the methods
with a path argument, and simply specify a block that will be called whenever a
request matches the request method (verb) and path.
The Ruby code that makes up our little Sinatra application reads very well,
and it only focusses on the bits and pieces we care about (as opposed to our
Rack application, which had to include the knowledge about the
Sinatra also allows you to simply return a string from this block, which will then be used as the response body, and sets things like the status code and headers for you (when it returns the Rack style response array to Rack). Since the vast majority of requests will want to return 200 as a status code Sinatra just assumes you want that too, unless you specify something else.