问题说明:
有两个项目,一个是主项目,另一个项目是timesheet_app。 我想将timeheet_app挂载到主项目。
当访问网址http://localhost:3000/tsheet/base
时,它说
" Sinatra不知道这个小曲"
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 self中,运行" padrino start"后,访问http://localhost:3000/base is ok.
。
在主项目中,检查" rake routes",找到另一个项目的网址" tsheet / base"就在那里。
(:base, :index) GET /tsheet/base
下面是一些与mount相关的代码。
主项目apps.rb 中的
这是控制器代码,很简单 任何想法?可能是padrino框架中的一个错误? padrino版本0.12.3
主项目gemfile中的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")
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
答案 0 :(得分:0)
我认为mount
与.to('/time_sheet')
混淆了我和你,甚至可能是padrino。
它应该提供以下地址:http://localhost:3000/time_sheet/tsheet/base
和
http://localhost:3000/tsheet/
(索引)。
应用程序没有"知道"它们安装在哪里,这使您更容易定义" local"应用程序并定义控制器,如果您稍后在其他地方包含此应用程序,则无需更改。
什么使得事情更难以消化然后必要的是你定义get '/tsheet/base
然后将某些东西装载为tsheet
,这也使得讨论更加困难。如果您的问题没有回答,请先考虑重命名,以便让您的示例更容易理解和讨论。
答案 1 :(得分:0)
快速修复:请将set:reload,false设置为您的gemified应用程序。