2014-08-20 1 views
0

Описание проблемы:Padrino: не удалось найти установленный маршрутизатор после монтирования другой проект в основной проект

Есть два проекта, один является основным проектом, другой проект timesheet_app. , и я хочу установить timeheet_app в основной проект.

когда URL http://localhost:3000/tsheet/base доступа, это говорит "Синатра не знает эту песенку"

Try this: 
# in app.rb 
class Qiankun::App 
    get '/tsheet/base' do 
    "Hello World" 
    end 
end 

Вот выход

DEBUG - 20/Aug/2014 14:15:22  GET (0.0870s) /tsheet/base - 404 Not Found 
DEVEL - 20/Aug/2014 14:15:22 Reloading application TimesheetApp::App 
DEVEL - 20/Aug/2014 14:15:22 Reloading application TimesheetApp::App 
DEVEL - 20/Aug/2014 14:15:22 Reloading application TimesheetApp::Tsheet 
DEVEL - 20/Aug/2014 14:15:22 Reloading application TimesheetApp::Tsheet 
DEBUG - 20/Aug/2014 14:15:22  GET (0.1120s) /tsheet/__sinatra__/404.png - 
04 Not Modified 

консоль в timesheet_app себя, после запуска "начала Padrino" , доступ http://localhost:3000/base is ok..

в главном проекте, отметьте «рейк-маршруты», найдите другой проект «tsheet/base».

(:base, :index)  GET /tsheet/base 

нижеследующий код связан с креплением.

в главном проекте apps.rb

Padrino.mount('TimesheetApp::App', :app_file => TimesheetApp.root('app/app.rb')).to('/time_sheet') 
Padrino.mount('TimesheetApp::Tsheet', :app_file => TimesheetApp.root('tsheet/app.rb')).to("/tsheet") 

в главном проекте Gemfile

gem 'timesheet_app',:path=>"d:\\IdeaLab\\timesheet_app",:require=>"timesheet_app" 

Вот код контроллера, довольно просто

TimesheetApp::Tsheet.controllers :base do 
    enable :reload 

    get :index do 
    "hello , tsheet!" 
    end 
end 

любая идея? может быть, ошибка в структуре padrino?

Padrino версия 0.12.3

ответ

0

Я думаю, что mount с .to('/time_sheet') путает меня и вас, и, возможно, даже Padrino.

Он должен сделать следующие адреса: http://localhost:3000/time_sheet/tsheet/base и http://localhost:3000/tsheet/ (указатель).

Приложения не «знают», где они установлены, что упрощает определение локальных приложений и определение контроллеров без необходимости изменения, если вы включите это приложение в другое место позже.

Что делает сложнее переварить, то необходимо определить, что вы определяете get '/tsheet/base, а затем монтируете что-то как tsheet, это также затрудняет разговор. Если ваш вопрос не отвечает, сначала подумайте о переименовании, чтобы сделать ваш пример более понятным и понятным.

Смежные вопросы