添加路线到破折号sinatra应用程序?

时间:2017-08-29 18:14:43

标签: ruby sinatra dashing

我正在尝试向我的虚拟应用程序添加路由,该应用程序将从webhook接收数据。

我尝试使用解决方案here,虽然这确实创建了路线,但它打破了' / sample'中的仪表板。

有什么想法吗?

这是我的lib / app.rb:

require 'sinatra/base'

class App < Sinatra::Base

  get '/callback' do
    "Callback route."
  end

end

这是我的config.ru:

require 'dashing'

configure do
  set :auth_token, 'YOUR_AUTH_TOKEN'

  helpers do
    def protected!
      # Put any authentication code you want in here.
      # This method is run before accessing any resource.
    end
  end
end

map Sinatra::Application.assets_prefix do
  run Sinatra::Application.sprockets
end

run Sinatra::Application
run App

更新:
我将路线名称改为隐藏的东西(这样安装肯定不会使用它)。它看起来像我放在最后的运行命令是生效的那个。如果运行应用程序是最后一个路由,如果运行Sinatra :: Application是最后一个,则仪表板可以工作。但是当一个人工作时,另一个人不会

1 个答案:

答案 0 :(得分:0)

您可以在config.ru中运行不同的应用。

在你的config.ru中,替换

map Sinatra::Application.assets_prefix do
  run Sinatra::Application.sprockets
end

run Sinatra::Application
run App

map('/') { run App }
map('/sample') { run Sinatra::Application }
map(Sinatra::Application.assets_prefix) { run Sinatra::Application.sprockets }

重要的是要注意,通过这样做,机架将处理路由前缀。因此,如果您导航到/sample,则在该路线下运行的sinatra应用会将其视为/

config.ru实际上是在Rack :: Builder上下文中运行的。所以上面等同于

apps = Rack::Builder.new do 
     map('/') { run App }
     map('/sample') { run Sinatra::Application }
     map(Sinatra::Application.assets_prefix) { run Sinatra::Application.sprockets }
end
run apps