16. Ruby on Rails, част 1

16. Ruby on Rails, част 1

16. Ruby on Rails, част 1

19 декември 2011

Днес

Преди това

въпроси относно метапрограмиране

Какво прави instance_eval?

instance_eval променя self в рамките на един блок

Въпрос 2

Споделете поне три различни начина за дефиниране методи в клас.

  • def something; end
  • define_method :something { |args| }
  • eval()

Въпрос 3

Ако искате да напишете клас-прокси, кой ще бъде родителският ви клас?

  • BasicObject
  • Защо не Object?
  • В Object има твърде много методи, за разлика от BasicObject

Въпрос 4

В Ruby могат ли да се създават анонимни класове и/или модули? Ако да, как?

Разбира се, посредством Class.new { block } и Module.new { block }

Въпрос 5

Що е то singleton class на обект? Какво знаете за него?

  • За всеки обект при нужда се създава специален клас, наречен singleton class
  • Съдържа методите, добавени специално към този обект
  • Известен е още като metaclass, eigenclass и собствен клас

Въпрос 6

Обратно към Rails

Що е то?

Защо Rails?

Принципи

Възможности

aka "фийчъри"

Възможности (2)

Кратка история

Версии

Архитектура

Компоненти

Генериране на изгледи

в HTML или друг формат

Пример с ERB

<div id="profile">
  <div class="left column">
    <div id="date"><%= print_date %></div>
    <div id="address"><%= current_user.address %></div>
  </div>
  <div class="right column">
    <div id="email"><%= current_user.email %></div>
    <div id="bio"><%= current_user.bio %></div>
  </div>
</div>

Пример с Haml

#profile
.left.column
  #date= print_date
  #address= current_user.address
.right.column
  #email= current_user.email
  #bio= current_user.bio

Пример със Slim

doctype html
html
  head
    title Slim Core Example
    meta name="keywords" content="template language"

  body
    h1 Markup examples

    div id="content" class="example1"
      p Nest by indentation

Демонстрация

Документация и ресурси

Въпроси