After uni, I studied PHP for 2 years and worked as a freelancer. In time I thought better of it and now I am at a crossroads. I decided to choose Ruby, because, in the words of Kennedy: "We want to go to the Moon, not because it is easy, but because it is difficult." That is, I want to work where there is no crowd of specialists, to do my job quietly and well, to program.

There is a base in the form of algorithmic thinking, regexp with a dictionary, HTML, CSS is available, so I really hope that I can quickly, in 4-6 months, learn Ruby and everything I need and start working as a Ruby freelancer.

I have a question like this - please help create a roadmap for Ruby for Web? What else do I need to know besides Ruby itself?

That is, please add or swap items in the list:

  1. Ruby
  2. Rails framework.
  3. HTML, CSS, Bootstrap.
  4. ...
  5. ...
  6. ...
  7. ...

Or is Ruby on Rails enough for me? I just do not have good skills, experience, to plan the development of your own, please help the novice colleague to go the right way!

Closed due to the fact that it is necessary to reformulate the question so that you can give an objectively correct answer to the party Nicolas Chabanovsky 17 May '16 at 18:46 .

The question gives rise to endless debates and discussions based not on knowledge, but on opinions. To get an answer, rephrase your question so that it can be given an unambiguously correct answer, or delete the question altogether. If the question can be reformulated according to the rules set out in the certificate , edit it .

  • Add at least a database and CRM. And so it is better to look at the requirements in vacancies. Everything is painted. - slippyk
  • I tried Ruby, chose Python. - Alexander2016

2 answers 2

Ruby on Rails, with a seemingly overwhelming amount of "magic" inside it is a fluid abstraction ( leaky abstraction ) and eventually the framework has to be learned "from below": from the means with which it facilitates the work. It is intended not for those who "do not know how yet", but rather for those who "know how, but are tired of it."

  • HTML and CSS supposedly already exist. Good, but I will clarify what you need. Rails will add a number of hacks based on JavaScript, but knowing quite well the way the browser communicates with the server, you can disassemble them using the documentation. If you actively use communication with the server through forms (and not via JavaScript), then it is worth exploring the form in which the data is transmitted from them: let's say why a group of radio buttons should have the same name .

  • Data exchange goes via HTTP . Knowing the ideas on which it is based is useful, as well as being able to see what the browser does when opening a certain page. That is, it is worth learning how to use developer tools in the browser.

  • Linux and / or OSX : do not even try to work with Ruby on Rails under Windows. If you're too used to it, then at least pick up a Linux virtual machine . Any Ubuntu-like distribution (Xubuntu, Linux Mint) does not require much time to master, but it will save many hours and expand the set of available tools.

    • We'll have to get used to working with the command line in the terminal: Rails has a lot of tools that can be used only through it.
    • Servers, mostly, also on Linux. Developing in an environment as close to combat as possible is a good idea. This concerns not only the OS , by the way. There is a well-known example in the book of Michael Hartl, where they recommend running an application with SQLite at home, and hosting with PostgreSQL. If you do not deviate from the book, it will work. But if you do something different, the differences will quickly make themselves known.
  • You can immediately learn Rails , if you are ready not to rush to put it into practice , because Ruby will still be needed as soon as tasks get more complicated "Hello, world!" and generated skeletons.

    • Therefore, starting with Ruby is a good idea.
  • Relational databases : Out of the box in Rails is a means of communicating only with them. Other means of permanent storage will have to be screwed by yourself, which is not an easy task for a beginner. To get started with Rails, enough understanding of the concepts of "table", "database" and "column".

    • SQL will be optional at first . The built-in interface in Rails (the ActiveRecord query language) covers simple queries quite well, and in development mode it shows the SQL that is executed as a result. Therefore, the basics of SQL can be studied already "on the fly", but as the complexity of the queries will have to dig into the SQL itself (apart from Rails) deeper.
    • There are calls to write "ported queries" that do not use the features of individual SQL dialects and work for all (or almost all) that support ActiveRecord. Before you listen to them, understand for yourself that this is just only at first , and in most cases it is simply not necessary, since there is an opportunity to run on the basis for which the application is designed. You can kill a lot of time for this, and then realize that it was not worth it.
  • Learn to work with someone else's code. "Walk through the ecosystem," look for libraries. The community is very rich in code to solve common (not all, but many) tasks. Try them in practice. Learn to work with documentation. If you find a task for which there is no acceptable solution at the moment, try to collect and publish your own. Perhaps someone will say thank you.

This is all about the Rails web applications themselves. Remains intact areas regarding the development process itself (editor with catching errors [all sorts of linter'y], stylgide and Rubocop, version control [mainly Git], self-testing [general theory and RSpec]) and deployment to the server (which is more about system administration) .

Unfortunately, the text format does not allow to adequately draw a "map" on which to navigate. The problem of demand for such materials is known .

    I will add the list:

    • Git
    • Relational DBMS (Postgres, MySQL)
    • Data Stores - Memcached, Redis
    • Deploying applications (RVM, setting up production server, deploy application)
    • Task Queues (Sidekiq)
    • Websocket
    • Now it is fashionable to make a SPA (Single Page Application) using a Rails application as an API, which means you need to own client MVC frameworks, for example, Backbone or Angular