Как стать автором
Обновить

Комментарии 17

Спасибо, поправил.
Очень быстрое вступление и короткое :) А за развернутую статью огромное спасибо — она как раз вовремя!
Какого рода задачи решаются и какие приложения можно делать с помощью Rack? Несколько раз встречал описание rack, но так и не пришло в голову где можно это применить.
Ну вот лично я использовал однажды, когда необходимо было, чтобы к категории в магазине можно было перейти как по ссылке /category/23 так и по любой другой хранящейся в базе ссылке (чтобы администратор сам мог их менять), например /sale.

HTTP-запрос перехватывался с помощью middleware, посылался запрос в БД и если там был нужный request.uri, то он подменялся и рельсы рендерили нужную страничку.
Сами рельсы реализованы поверх rack (не изначально). Также куча плагинов работают как rack middleware, например omniauth.
my_rack_proc = lambda { | ENV | [200, {}, [«Hello. The time is #{Time.now}»]] }


SyntaxError: (irb):6: formal argument cannot be a constant
my_rack_proc = lambda {|ENV| [200, {}, [«Hello. The time…

переведите ENV в нижний регистр
Благодарю. Гугл транслейт пошалил, а я и не заметил.
>> Rack:: Handler.constants

=> [: CGI,: FastCGI,: Mongrel,: EventedMongrel,: SwiftipliedMongrel,: WEBrick,: LSWS,: SCGI,: Тонкие]


А в вакансиях пишут «Нужное знание технологий: Java, Hibernate, Весна» :)

Исправте на:
[:CGI, :FastCGI, :Mongrel, :EventedMongrel, :SwiftipliedMongrel, :WEBrick, :LSWS, :SCGI, :Thin]

И уберите пробел между Handler
Если мне память не изменяет, то lambda и proc немного разные вещи.
Разные. И различия в них достойны целой статьи (потому что там хватает своих тонкостей).
Это я к
>>В руби блоки — это не объекты, но они могут быть преобразованы в объекты класса Proc. Это можно сделать, вызвав метод lambda класса Object.
С помощью метода lambda тоже создается объект класса Proc.

image
Я слышал, что в Руби анонимные функции должны занимать не более одной строки. Правда ли это?
Это в питоне так насколько я знаю, а в руби нет
Статья полна довольно странными утверждениями и приёмами.

HTTP — это простой протокол.
Очень спорно.

# irb --simple-prompt
>> require 'rack'
=> true


gem list rack

метод lambda класса ObjectВ Object он приватен. А определён он в Kernel.

require './my_app'

А в целом да, полезно знать.
Поправки.

> HTTP — это простой протокол.
Очень спорно.

> # irb --simple-prompt
> >> require 'rack'
> => true

gem list rack

> метод lambda класса Object

В Object он приватен. А определён он в Kernel.

> require './my_app'

А в целом да, полезно знать.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории