рдХрд╕реНрдЯрдо рдордЪрд╛рди рд░реЗрд▓


рд╕рдВрднрд╡рддрдГ рдЖрд░рдУрдЖрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣рд░ рдХреЛрдИ рдордЪрд╛рди рдХреА рдХреНрд╖рдорддрд╛ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдерд╛, рдЬреЛ рдПрдХ рдЯреАрдо рдХреЛ рдкрд▓рд╛рдпрди, рдирд┐рдпрдВрддреНрд░рдХ, рдореЙрдбрд▓ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдорд╛рдирдХ рд░реЗрд▓ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ: рдПрд░рдм, рдЯреЗрд╕реНрдЯ :: рдпреВрдирд┐рдЯ, рдлрд┐рдХреНрд╕реНрдЪрд░, рд▓реЗрдХрд┐рди рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдЙрдкрдХрд░рдг: рд╣реИрдорд▓, рдЖрд░рд╕реНрдкреЗрдХ, рдХрдХрдбрд╝реА, рдлреИрдХреНрдЯрд░реА рдЧрд░реНрд▓, рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ, рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ? рдЧреЛрдЯреЛ рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ред

рд╕реНрд░реЛрдд рдбреЗрдЯрд╛:
рд░реВрдмреА рдСрди рд░реЗрд▓реНрд╕ rspec; рдЗрдЪреНрдЫрд╛-рдкреГрд╖реНрда рдкрд░ рдЕрдВрдХ рд▓рдЧрд╛рдирд╛; haml; рдХрд╛рд░рдЦрд╛рдиреЗ рдореЗрдВ рдорд╣рд┐рд▓рд╛

рдЙрджреНрджреЗрд╢реНрдп:
% rails generate scaffold post post:string
рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ:
  1. contoller рдХреЗ рд╕рд╛рде will_paginate рд╕рдорд░реНрдерди, рд░реВрд╕реА рднрд╛рд╖рд╛ рдХреЗ рд╕рдВрджреЗрд╢
  2. will_paginate рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдореЙрдбрд▓
  3. рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рд╛рдордЧреНрд░реА рдФрд░ haml рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рджреЗрдЦреЗрдВ
  4. рдЯреЗрд╕реНрдЯ :: рдпреВрдирд┐рдЯ рдХреЗ рдмрдЬрд╛рдп Rspec рдкрд░реАрдХреНрд╖рдг
  5. рдорд╛рдирдХ рдлрд┐рдХреНрд╕реНрдЪрд░ рдХреЗ рдмрдЬрд╛рдп рдлреИрдХреНрдЯреНрд░реА рдЧрд░реНрд▓ рдлреИрдХреНрдЯреНрд░реА



рд╕реНрдХреИрдлреЛрд▓реНрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдордЪрд╛рди рдПрдХ рдирд┐рд░реНрдорд┐рдд рдЬрдирд░реЗрдЯрд░ рд╣реИ, рдпрд╣ рдЦреБрдж рд╕реЗ рдХреБрдЫ рднреА рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдиреНрдп рдЬрдирд░реЗрдЯрд░ рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИред

рд╡рд░реНрддрдорд╛рди рдкрд╛рдбрд╝ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдЬрд╛рдБрдЪ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:
% rails g scaffold --help

рдЬрдирд░реЗрдЯрд░ рдХреЛ Rreens_ROOT / config / application.rb рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░ рдЖрдк рдЗрд╕ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 config.generators do |g| #   end 

рдХрд╕реНрдЯрдо рдирд┐рдпрдВрддреНрд░рдХ


рдЖрдЗрдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд╛рде рдорд╛рдирдХ рдирд┐рдпрдВрддреНрд░рдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░реЗрдВред
рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдордгрд┐ рд╕реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╣реА рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд░рддреНрдиреЛрдВ рдХрд╛ рдорд╛рд░реНрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
RAILS_ROOT% rails console
puts $LOAD_PATH
...
...
...


GEMS_PATH / рд░реЗрд▓рд┐рдпреЛрдВ [рд╕рдВрд╕реНрдХрд░рдг] / lib / рд░реЗрд▓ / рдЬрдирд░реЗрдЯрд░ / рд░реЗрд▓ / рд╕реНрдХреИрдлреЛрд▓реНрдб_рдХрдВрдЯреНрд░реЛрд▓рд░ / рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕реЗ R Colors_ROOT / lib / рдЯреЗрдореНрдкреНрд▓реЗрдЯ / рд░реЗрд▓ / scoldold_controller / рдирд┐рдпрдВрддреНрд░рдХ. rb

 #      controller.rb class <%= controller_class_name %>Controller < ApplicationController # GET <%= route_url %> # GET <%= route_url %>.xml def index @<%= plural_table_name %> = <%= orm_class.all(class_name) %> respond_to do |format| format.html # index.html.erb format.xml { render :xml => @<%= plural_table_name %> } end end ... 

рд╣рдо рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд░реВрд╕реА рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдкреГрд╖реНрдард╛рдВрдХрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд╛рда рдХреЛ рдЯреНрд░рд┐рдо рдХрд░рддреЗ рд╣реИрдВ
 # encoding: UTF-8 class <%= controller_class_name %>Controller < ApplicationController # GET <%= route_url %> def index @<%= plural_table_name %> = <%= class_name %>.paginate :page => params[:page], :order => 'id DESC' end ... 

рдордЪрд╛рди рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдРрд╕рд╛ рд╕реБрдВрджрд░ рдХреЛрдб рдорд┐рд▓рддрд╛ рд╣реИ
 # encoding: UTF-8 class PostsController < ApplicationController # GET /posts def index @posts = Post.paginate :page => params[:page], :order => 'id DESC' end ... 

рдХрд╕реНрдЯрдо рдореЙрдбрд▓


GEMS_PATH / activerecord [version] / lib / рд░реЗрд▓ / рдЬрдирд░реЗрдЯрд░ / active_record / рдореЙрдбрд▓ / рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рд╛рде RAILS_ROOT / lib / рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ / active_rectord / model / model.rb рдореЗрдВ model.rb рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝рд╛рдЗрд▓ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБ

 #   model.rb class <%= class_name %> < <%= parent_class_name.classify %> <% attributes.select {|attr| attr.reference? }.each do |attribute| -%> belongs_to :<%= attribute.name %> <% end -%> end 


рд░реВрд╕реА рднрд╛рд╖рд╛ рдФрд░ will_paginate рдХреЗ рд▓рд┐рдП 2 рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝реЗрдВ
 # encoding: UTF-8 class <%= class_name %> < <%= parent_class_name.classify %> cattr_reader :per_page @@per_page = 20 <% attributes.select {|attr| attr.reference? }.each do |attribute| -%> belongs_to :<%= attribute.name %> <% end -%> end 


рдЖрдЙрдЯрдкреБрдЯ рд╣реИ:
 # encoding: UTF-8 class Post < ActiveRecord::Base cattr_reader :per_page @@per_page = 20 end 

рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝рд░


рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо .erb рдХреЗ рдмрдЬрд╛рдп HAML рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд░реЗрд▓ рдХреИрд╕реЗ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ рдПрд░рдм, рд▓реЗрдХрд┐рди рд╣реИрд▓реНрдо рджреГрд╢реНрдп?
рдмрд╣реБрдд рд╕рд░рд▓, рдмрд╕ рдордгрд┐ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ "haml-rails"ред
рдЬреЗрдордлрд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
 gem 'haml-rails' 

рдФрд░ рдмрдВрдбрд▓ рдЗрдВрд╕реНрдЯрд╛рд▓ рдЪрд▓рд╛рдПрдВ

рд╣реЛ рдЧрдпрд╛! рдЕрдм рд░реЗрд▓ рдЬрдирд░реЗрдЯрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП file_name.html.haml рдлрд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИ

рдЪрд▓рд┐рдП рдЕрдкрдиреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред 5 рдлрд╛рдЗрд▓реЗрдВ (edit.html.haml, _form.html.haml, index.html.haml, new.html.haml, show.html.haml) GEMS_PATH / haml-rails рд╕реЗ [рд╕рдВрд╕реНрдХрд░рдг] / lib / рдЬрдирд░реЗрдЯрд░ / haml / рдордЪрд╛рди / рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣рдорд╛рд░реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрдпрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ RрдмреНрд╕_ROOT / lib / рдЯреЗрдореНрдкреНрд▓реЗрдЯ / haml / рдордЪрд╛рди рдХреЗ рд▓рд┐рдП

рдореИрдВ рдпрд╣рд╛рдВ рдХреЛрдб рдирд╣реАрдВ рджреВрдВрдЧрд╛, рдЖрдк рдЗрд╕реЗ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдкрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ

рд╕реНрд░реЛрдд рдЯреЗрдореНрдкрд▓реЗрдЯ - haml-rails
рд╕рдВрдкрд╛рджрди рдХреЗ рдмрд╛рдж рдЯреЗрдореНрдкрд▓реЗрдЯ - рд▓рд┐рдВрдХ
рдкрд░рд┐рдгрд╛рдо - рд▓рд┐рдВрдХ

rspec


рдЬреИрд╕рд╛ рдХрд┐ рд╣реИрд▓реНрдо рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдорд╛рдирдХ RSpec рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдордгрд┐ рдХреЛ "rspec-rails" рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдордЪрд╛рди рдкрд░реАрдХреНрд╖рдг рдореЙрдбрд▓, рдирд┐рдпрдВрддреНрд░рдХ, рд╕рд╣рд╛рдпрдХреЛрдВ, рд╡рд┐рдЪрд╛рд░реЛрдВ, рд░реВрдЯрд┐рдВрдЧ рдФрд░ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП rspec рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдПрдЧрд╛ред

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдк, рдореЗрд░реА рддрд░рд╣, рдХрдИ rspec рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ ROR рд╣рдореЗрдВ рдЗрд╕ рдЖрдЗрдЯрдо рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

 #RAILS_ROOT/config/application.rb config.generators do |g| #    rspec   , ,    #..    spec's     g.test_framework :rspec, :view_specs => false, :helper_specs => false, :routing_specs => false, :request_specs => false end 

рдлреИрдХреНрдЯрд░реА рд▓рдбрд╝рдХреА


FG рдХреЗ рд▓рд┐рдП рдордЪрд╛рди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдордгрд┐ рдХреЛ рд╕реЗрдЯ рдХрд░реЗрдВ "rails3-рдЬрдирд░реЗрдЯрд░"
рдФрд░ рдирд┐рдореНрди рдкрдВрдХреНрддрд┐ рдХреЛ рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
 #RAILS_ROOT/config/application.rb config.generators do |g| g.test_framework :rspec, :view_specs => false, :helper_specs => false, :routing_specs => false, :request_specs => false g.fixture_replacement :factory_girl, :dir => "spec/factories" end 

Factory_girls рдХреЗ рдЕрд▓рд╛рд╡рд╛, rails3-рдЬрдирд░реЗрдЯрд░ рд░рддреНрди DataMapper, Authlogic, Mongomapper, Shoulda, Formtastic рдФрд░ SimpleForm рдХреЗ рд▓рд┐рдП рдЬрдирд░реЗрдЯрд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИ

рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рд╛?


% rails g scaffold final final:string
  active_record рд▓рд╛рдЧреВ рдХрд░реЗрдВ
       db / migrate / 20110713193843_create_finals.rb рдмрдирд╛рдПрдБ
       рдРрдк / рдореЙрдбрд▓ / рдлрд╛рдЗрдирд▓ рдмрдирд╛рдПрдВ
       Rspec рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░реЗрдВ
       рдХрд▓реНрдкрдирд╛ / рдореЙрдбрд▓ / final_spec.rb рдмрдирд╛рдПрдБ
       factory_girl рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░реЗрдВ
       рдХрд▓реНрдкрдирд╛ / рдХрд╛рд░рдЦрд╛рдиреЛрдВ / рдлрд╛рдЗрдирд▓ рдмрдирд╛рдПрдБ
        рдорд╛рд░реНрдЧ рд╕рдВрд╕рд╛рдзрди: рдлрд╛рдЗрдирд▓
       scaffold_controller рдЖрд╣реНрд╡рд╛рди рдХрд░реЗрдВ
       рдРрдк / рдХрдВрдЯреНрд░реЛрд▓рд░ / рдлрд╝рд╛рдЗрдирд▓реНрд╕_рдХрдВрдЯреНрд░реЛрд▓рд░.рдЖрд░рдмреА рдмрдирд╛рдПрдБ
       рд╣рд╡рд▓рджрд╛рд░ рдХрд╛ рдЖрд╣реНрд╡рд╛рди
       рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рд╡рд┐рдЪрд╛рд░ / рдлрд╛рдЗрдирд▓ рдмрдирд╛рдПрдВ
       рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рд╡рд┐рдЪрд╛рд░ / рдлрд╛рдЗрдирд▓ / index.html.haml рдмрдирд╛рдПрдВ
       рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рд╡рд┐рдЪрд╛рд░ / рдлрд╛рдЗрдирд▓ / edit.html.haml рдмрдирд╛рдПрдБ
       рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рд╡рд┐рдЪрд╛рд░ / рдлрд╛рдЗрдирд▓ / show.html.haml рдмрдирд╛рдПрдВ
       рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рд╡рд┐рдЪрд╛рд░ / рдлрд╛рдЗрдирд▓ / new.html.haml рдмрдирд╛рдПрдВ
       рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рд╡рд┐рдЪрд╛рд░ / рдлрд╛рдЗрдирд▓ / _form.html.haml рдмрдирд╛рдПрдВ
       Rspec рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░реЗрдВ
       рд╕реНрдкреЗрдХ / рдХрдВрдЯреНрд░реЛрд▓рд░ / рдлрд╛рдЗрдирд▓_рдХрдВрдЯреНрд░реЛрд▓рд░_рд╕реНрдкреЗрдХ.рдЖрд░рдмреА рдмрдирд╛рдПрдБ
       рдорджрджрдЧрд╛рд░
       Rspec рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░реЗрдВ
       рдорджрджрдЧрд╛рд░
       рдРрдк / рд╣реЗрд▓реНрдкрд░реНрд╕ / рдлрд╝рд╛рдЗрдирд▓_рд╣реЗрд▓реНрдкрд░ .rb рдмрдирд╛рдПрдБ
       Rspec рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░реЗрдВ
       рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ рдордВрдЧрд╡рд╛рдПрдВ
    рд╕рдорд╛рди рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ / рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ / рдкрд╛рдбрд╝ 

MVC рдХреЗ рд▓рд┐рдП рдореВрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ; haml view's; factory_girl рдХрд╛рд░рдЦрд╛рдиреЛрдВ; рдореЙрдбрд▓ рдФрд░ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЗ рд▓рд┐рдП RSpec; рдмрд┐рд▓реНрдЯ-рдЗрди рдкреЗрдЬрд┐рдиреЗрд╢рдиред

рд╕рдм рдХреБрдЫ рдЬреИрд╕рд╛ рд╣рдо рдЪрд╛рд╣рддреЗ рдереЗред рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВ))

рдкреВрд░рд╛ рдХреЛрдб рджреЗрдЦреЗрдВ

Github

рдЖрджрд░

рдЬреЗрдирд░реЗрдЯрд░ рдореИрдиреБрдЕрд▓
рдкреЙрд▓ рдХреЗ рдмреИрд░реА рдЕрдиреБрдЪреНрдЫреЗрдж: рд░реЗрд▓ рдореЗрдВ рдЬрдирд░реЗрдЯрд░ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдирд╛ 3
Rspec рдЬрдирд░реЗрдЯрд░ рд╡рд┐рд╕реНрддрд╛рд░
рдЬрдирд░реЗрдЯрд░ рдкреЙрдбрдХрд╛рд╕реНрдЯ
rails3-рдЬрдирд░реЗрдЯрд░ рдордгрд┐
haml-rails рд░рддреНрди

Source: https://habr.com/ru/post/In123551/


All Articles