Reputation: 38418
I've been going through this online rails tutorial: http://www.railstutorial.org/ I highly recommend it if you want to get an overview of what rails do and some best practice methods.
But now, as I do my first application, I am having trouble isolating parts of Rails that I need to understand and learn. My question is: What are the components of rails that I need to understand to be competent? If you could point out where the resources are, that would be much appreciated also.
This is a rough idea of what I expect I need to know:
This assumes that I am an experienced developer and I have my development environment set up and can do a basic hello world application
Upvotes: 2
Views: 2429
Reputation: 10762
Some things that spring to mind...
A good IDE/editor is useful, common ones are TextMate (with bundles), Aptana RadRails, and Vim (with plugins).
Definitely check out Ryan Bates' awesome screencasts and http://railscasts.com/
Upvotes: 1
Reputation: 9995
In rails, the main components to be noticed are as:
In addition, You should go through these slides
and this page also contains a lot of info for important rails components.
Upvotes: 0
Reputation: 8434
Below are the basic Rails components(gems -- not dependencies and libraries)
ActiveSupport is a compatibility library including methods that aren't necessarily specific to Rails. You'll see ActiveSupport used by non-Rails libraries because it contains such a lot of useful baseline functionality. ActiveSupport includes methods like how Rails changes words from single to plural, or CamelCase to snake_case. It also includes significantly better time and date support than the Ruby standard library.
ActiveModel hooks into features of your models that aren't really about the database - for instance, if you want a URL for a given model, ActiveModel helps you there. It's a thin wrapper around many different ActiveModel implementations to tell Rails how to use them. Most commonly, ActiveModel implementations are ORMs (see ActiveRecord, below), but they can also use non-relational storage like MongoDB, Redis, Memcached or even just local machine memory.
ActiveRecord is an Object-Relational Mapper (ORM). That
means that it maps between Ruby objects and tables in a
SQL database. When you query from or write to the SQL
19database in Rails, you do it through ActiveRecord.
ActiveRecord also implements ActiveModel. ActiveRecord
supports MySQL and SQLite, plus JDBC, Oracle,
PostgreSQL and many others.
ActionPack does routing - the mapping of an incoming URL to a controller and action in Rails. It also sets up your controllers and views, and shepherds a request through its controller action and then through rendering the view. For some of it, ActionPack uses Rack. The template rendering itself is done through an external gem like Erubis for .erb templates, or Haml for .haml templates. ActionPack also handles action- or view-centered functionality like view caching.
ActionMailer is used to send out email, especially email based on templates. It works a lot like you'd hope Rails email would, with controllers, actions and "views" - which for email are text- based templates, not regular web-page templates.
A standard Rails application depends on several gems, specifically:
abstract
actionmailer
actionpack
activemodel
activerecord
activesupport
arel
builder
bundler
erubis
i18n
mime-types
polyglot
rack
rack-cache
rack-mount
rack-test
rails
railties
rake
sqlite3-ruby
thor
treetop
tzinfo
Upvotes: 7