С Новым годом! Форум программистов, компьютерный форум, киберфорум
Ruby
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 4

Роутинг в Ruby on Rack

10.12.2013, 12:12. Показов 1497. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток. Пишу небольшое веб-приложение. Sinatra и Rails пока не трогаю.

В config.ru:

Ruby
1
2
3
4
5
6
7
8
9
10
11
require 'rubygems'
require 'rack'
 
map '/index' do
    require './index'
    run Index.new
end
map '/about' do
    require './about'
    run About.new
end
Пока всё хорошо, но хотелось бы написать что-то вроде:

Ruby
1
2
3
map '/articles/:id' do
    #тут выбираем статью по идентификатору
end
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.12.2013, 12:12
Ответы с готовыми решениями:

rack и rails
в общем, во всех учебниках обучение идет сверху-вниз, мне же нужно наоборот, т.е. сначала изучать rack, а потом уже на основе него понять...

Вопрос по Mobile Rack
ребята здравствуйте! сегодня поколупал старые компы и нашел такую штуку, втыкается в место дисковода в корпус, в нее можно вставить жесткий...

чтобы выучить Ruby on Rails, надо перед этим учить сам Ruby?
чтобы учить Ruby on Rails, надо перед этим учить сам Ruby?

8
 Аватар для MpaKus
227 / 225 / 23
Регистрация: 30.01.2013
Сообщений: 720
10.12.2013, 13:58
вроде как map такого не может, его можно посадить на на первый уровень, а параметры разбирать уже внутри класса запущенного rack'ом

Ruby
1
2
3
4
5
6
7
8
9
class Article
  def call(env)
    # а тут чекать уже  env['REQUEST_PATH'] и доставать параметры
  end
end
 
map '/articles' do
  run Article.new
end
0
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 4
10.12.2013, 14:15  [ТС]
К этому варианту я изначально пришел, но это не очень удобно((( Здесь ребята говорят об искомом варианте:

Ruby
1
2
3
4
5
6
7
8
9
10
11
map "/" do
  map "/articles" do
    map "/:article_id/comments" do
      run Comments.new
    end
    run Articles.new
  end
  map "/comments" do
    run Comments.new
  end
end
но даже с гугл транслейтом, не могу понять, как мне этого добиться. Их вариант работает только когда в адресную строку вбиваю "http://localhost:9292/articles/:article_id/comments". Если вместо ":article_id" написать число, то этот блок map не выполняется.

Добавлено через 4 минуты
Пробовал ещё делать так (упрощенный вариант):

Ruby
1
2
3
4
5
require './id'
run Rack::URLMap.new(
  '/' => Id.new('1'),
  '/:id' => Id.new('0')
)
Опять же 0 выводится только, если вбить http://localhost:9292/:id. На http://localhost:9292/3 отвечает 1

Может есть какой-то ещё вариант?
0
 Аватар для MpaKus
227 / 225 / 23
Регистрация: 30.01.2013
Сообщений: 720
10.12.2013, 14:18
Патч не приняли если не ошибаюсь и сделали все верно, потому как нужна обратная совместимость, Rack это корень всех вебок на Ruby и он должен быть простой.

То что "не очень удобно" - никто и не пишет большие приложения на Rack, а чтобы было удобно берут Sinatra например.

Добавлено через 1 минуту
Вариант 1: в call обрабатываеть env, доставать самому параметры, парсить. проверять типы. Но это похоже на создание своего велосипеда в виде роутинга, хотя есть gem rack-routes
0
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 4
10.12.2013, 14:44  [ТС]
А можно пример использования rack-routes?
0
 Аватар для MpaKus
227 / 225 / 23
Регистрация: 30.01.2013
Сообщений: 720
10.12.2013, 14:45
В Google наверное есть.
0
 Аватар для MpaKus
227 / 225 / 23
Регистрация: 30.01.2013
Сообщений: 720
10.12.2013, 14:56
а чем папка examples в проекте плоха?
0
0 / 0 / 0
Регистрация: 10.12.2013
Сообщений: 4
10.12.2013, 15:01  [ТС]
Не понял вас. Какая папка? Я так понимаю, она должна где-то появиться после установки гема?
0
 Аватар для MpaKus
227 / 225 / 23
Регистрация: 30.01.2013
Сообщений: 720
10.12.2013, 15:03
На github в исходниках этого gem'а
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.12.2013, 15:03
Помогаю со студенческими работами здесь

Хочу полностью удалить ruby и ruby on rails с linux mint(a) и установить с чистого листа
Вес день мучаюсь вот что у у меня получилась, походу я не удалил его полностью и собираюсь снова установить и тут много проблемы

ИБП Daker dk 3000 rack
Мужики, прям срочно нужна электрическая и монтажная схема на ups daker dk 3000 rack. Выгорел кусок платы. В принципе восстановить можно,...

Горячее отключение винтов в mobile rack
Если верить производителям и разным железным ресурсам на просторах сети, жесткие диски в устройствах типа мобильных шасси "mobile...

HDD - Mobile Rack 2,5 Sata в корпус обычного ПК
Доброго времени суток! Сталкивался-ли кто с таким решением? Дело в том, что часть данных хотим хранить на съемных быстро извлекаемых...

Разработчик Ruby/Ruby on Rails (м. ВДНХ)
В компанию, занимающуюся разработкой и реализацией рекламных интернет-кампаний для разработки нового высоконагруженного интернет проекта...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru