Как написать приложение на рельсах.

Это черновик статьи. Когда-нибудь я ее допишу. Она будет доступна в том числе и по этому адресу. Если есть вопросы, или помочь хотите — милости прошу.

  1. Как написать приложение на рельсах.
    1. PostgreSQL
    2. Начало
    3. Twitter Bootstrap
    4. Simple_form
    5. Nested_form
    6. Cocoon
    7. Аутентификация
    8. Загрузка файлов
    9. Постраничный вывод (pagination)
    10. Навигационная цепочка (breadcrumbs, хлебные крошки)

PostgreSQL

$ sudo -u postgres psql
create role komar with createdb login password '1234';

Начало

Обновите рельсы.

$ gem install rails

Создайте новый проект.

$ rails new appname --database=postgresql

Поселите туда git. Ибо нехуй.

$ cd appname/
$ git init
$ git add ./
$ git commit -m 'rails new appname'

Добавьте в Gemfile рабочий JS-рантайм. Я пока не очень понимаю суть проблем, которые с ним возникают, но я просто добавляю в Gemfile вот такое:

gem 'therubyracer', '= 0.11.1'
gem 'libv8' # for building therubyracer
$ bundle update
$ rails server

Twitter Bootstrap

gem 'twitter-bootstrap-rails', '> 3.0.0'
$ rails generate bootstrap:install static
$ rails g bootstrap:layout application fluid
$ rails g bootstrap:themed [RESOURCE_NAME]

Simple_form

gem 'simple_form', '> 3.0.0'
$ rails generate simple_form:install --bootstrap
===============================================================================

  Be sure to have a copy of the Bootstrap stylesheet available on your
  application, you can get it on http://twitter.github.com/bootstrap.

  Inside your views, use the 'simple_form_for' with one of the Bootstrap form
  classes, '.form-horizontal', '.form-inline', '.form-search' or
  '.form-vertical', as the following:

    = simple_form_for(@user, html: {class: 'form-horizontal' }) do |form|

===============================================================================

...

Nested_form

gem 'nested_form'

Добавить в app/assets/javascripts/application.js:

//= require jquery_nested_form

Cocoon

gem 'cocoon'

...

Аутентификация

gem 'devise'
$ rails g devise:install
Some setup you must do manually if you haven't yet:

  1. Ensure you have defined default url options in your environments files. Here 
     is an example of default_url_options appropriate for a development environment 
     in config/environments/development.rb:

       config.action_mailer.default_url_options = { :host => 'localhost:3000' }

     In production, :host should be set to the actual host of your application.

  2. Ensure you have defined root_url to *something* in your config/routes.rb.
     For example:

       root :to => "home#index"

  3. Ensure you have flash messages in app/views/layouts/application.html.erb.
     For example:

       <p class="notice"><%= notice %></p>
       <p class="alert"><%= alert %></p>

  4. If you are deploying on Heroku with Rails 3.2 only, you may want to set:

       config.assets.initialize_on_precompile = false

     On config/application.rb forcing your application to not access the DB
     or load models when precompiling your assets.

  5. You can copy Devise views (for customization) to your app by running:

       rails g devise:views

===============================================================================
$ rails g devise:views
$ rails g devise User

devise 3.2.1 fucked up here

$ rake db:create
$ rake db:migrate

...

Загрузка файлов

gem 'carrierwave'

Постраничный вывод (pagination)

...

...