У меня есть два приложения на базе модульной стойки Синатра: core.rb
& project.rb
:URL-адрес Карта всего пространства имен с использованием стойки?
# core.rb
class Core < Sinatra::Base
get "/" do
"Hello, world!"
end
end
# project.rb
class Project < Sinatra::Base
get "/" do
"A snazzy little Sinatra project I wish to showcase."
end
get "/foo" do
"If you see this, congratulations."
end
end
Моя цель состоит в том, чтобы просто отобразить все /projects
пространство имен для Project
класса, Тогда как все остальное обрабатывается с помощью Core
класса. Я обнаружил, что вы можете сделать это в ограниченной степени 2-мя способами:
# config.ru
require "./core.rb"
require "./projects.rb"
map "/projects" do
# Method #1: Using Sinatra's built-in Middleware
use Project
# Method #2: Using Rack::Cascade
run Rack::Cascade.new([Project, Core])
end
run Core
Оба методы, которые я пытался выше, имеют один и тот же эффект. Маршруты /
и /projects
показывают правильно, однако при переходе к /projects/foo
он выдает ошибку, в которой говорится, что не может найти /foo
маршрута в моем основных core.rb
файла - который НЕ то, что я хочу. Другими словами, он ищет мой /foo
маршрут в неверном файле :(
Итак, можно отобразить по всему /projects
имен с использованием стоечных? И нет, добавив «/ проекты /» всем своим маршрутам в project.rb
не вариант здесь я боюсь
Ahh, не выпустил решение, было так просто. Так в чем же разница между 'run' и' use'? И да, использование 'run' закончило работать отлично, спасибо. –