Ruby on Rails is a web
application framework.
Rails is the
framework, Ruby is the language.
Designed by David
Heinemeier Hansson in 2005, it's become renowned in the Internet startup world
for its adoption by some of the leading "startups" of our time,
including Stripe, Uber and Groupon.
If you want to learn
to program in Ruby on Rails, this tutorial should give you an overview of what
to do. I won't go into specifics because I just want to give you an idea as to
the structure of an application. If you follow what I propose, you should more
fully understand how these applications work.
Web Applications
All software applications
work in the same way -
·
Data is inputted
·
Data is processed
·
Data is outputted
The
way the data is inputted and processed is dependent on the platform your
application runs on. How it is outputted depends on your application.
The difference with
web applications is that their logic runs on a server, with the data IO being
passed through the Internet (specifically, the HTTP protocol).
The complication of
web apps is that you require the ability to accept inbound data, and return
responses. This is handled by a web server program (NGinx or Apache). I'll
explain this in a minute.
Software Stack
When you create a
piece of software, you have to consider the "stack" on which it runs.
The "stack"
is all the software required to run your application. In the world of desktop
games, for example, the "stack" may include the likes of DirectX or a
particular graphics driver.
The main hold-back for
would-be web application developers is understanding how the "web"
software stack works. Web works similarly to native applications, except for
one distinct difference - stateless.
The
"Internet" operates under the HTTP protocol. By nature, this is known
as a "stateless" protocol - each request you send is considered
independent to the last. Unlike stateful protocols (which retain
state), stateless protocols have to rebuild the application's
state each time.
Whilst this means
nothing to most people, the point is that if you're going to develop a web
based application, you need to use a framework or technology set which makes
the stateless nature of HTTP as integrated as possible. Most pertinently, you
need an authentication system which rebuilds the user's session on every
request (I'll explain this in a second).
Ruby vs PHP
Ruby (the language) is
akin to PHP - they are both procedural and both are used heavily on the
Internet.
The main difference
between Ruby and PHP is that PHP is accessed directly on the client-side, Ruby
needs a proxy.
Applications such as
WordPress are built with PHP because it's free, open source and can be run on
any LAMP (Linux Apache MySQL PHP) server (which is basically all of the shared
hosting in existence).
The point with Ruby is
that it is a LOT more temperamental than PHP - it requires running processes to
help it operate and can often fail to start if any issues arise.
Basics
To get started, you
need three things:
·
An IDE (Integrated
Development Environment)
·
A Ruby-Compatible Web
Server (Heroku)
·
Ruby, Rails & GIT
Installed On Your System
I'll
explain how it works.
An "IDE" is
a text editor with the ability to discern the code you input. I currently use
Atom (free) from Github. You can download it from Atom.io.
The IDE allows you to
write the code. Whilst you're free to use a standard text editor (Notepad or
Notepad++), it's much better to use a system such as Atom or even Visual
Studio, as to gain the full functionality of the language (linting etc).
From here, you'll also
need to install Ruby, Rails and GIT on your development system. Ruby is the
programming language (nothing works unless you have it), Rails is the framework
which allows us to build the web based application, and GIT is the SCM (Source
Code Management) system we will use to push our code to our server.
For server technology,
the easiest is to use Heroku (Heroku.com) - a completely managed system. You
can get started for free, with upgraded capacity, speed etc added at extra
monthly cost. If you're comfortable setting up your own server, you may wish to
use the likes of DigitalOcean.
No comments:
Post a Comment