【问题标题】:Padrino: could not find mounted router after mount another project into main projectPadrino:将另一个项目挂载到主项目后找不到挂载的路由器
【发布时间】:2014-08-20 06:07:09
【问题描述】:

问题描述:

有两个项目,一个是主项目,另一个项目是timesheet_app。 我想将 timeheet_app 挂载到主项目。

当访问 url 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”,找到另一个项目的url“tsheet/base”就在那里。

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

下面是一些mount相关的代码

在主项目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

【问题讨论】:

    标签: ruby rack mount padrino


    【解决方案1】:

    我认为 mount.to('/time_sheet') 让我和你甚至是帕德里诺都感到困惑。

    它应该提供以下地址:http://localhost:3000/time_sheet/tsheet/basehttp://localhost:3000/tsheet/(索引)。

    这些应用程序不“知道”它们安装到的位置,这使您可以更轻松地定义“本地”应用程序和定义控制器,而无需更改,如果您稍后将此应用程序包含在其他位置。

    让这件事变得更难消化的原因是你定义了get '/tsheet/base,然后将一些东西挂载为tsheet,这也让谈论变得更加困难。如果您的问题没有得到解答,请考虑先重命名,以使您的示例更易于理解和讨论。

    【讨论】:

      【解决方案2】:

      快速修复:请将 set :reload, false 设置为您的 gemified 应用。

      https://github.com/padrino/padrino-framework/issues/1746

      【讨论】:

        猜你喜欢
        • 2020-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-10
        • 1970-01-01
        相关资源
        最近更新 更多