我正在尝试向我的虚拟应用程序添加路由,该应用程序将从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是最后一个,则仪表板可以工作。但是当一个人工作时,另一个人不会
答案 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