2017-08-29 23 views
0

我試圖添加一個路由到我的瀟灑應用程序,將從webhook接收數據。添加路線,以衝刺sinatra應用程序?

我嘗試使用解決方案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 

UPDATE:
我改變了路線名稱晦澀的東西(這樣的安裝肯定不會使用它)。它看起來像我最後放的那個運行命令是生效的那個命令。如果運行應用程序是最後一次,則該路線起作用,如果運行Sinatra :: Application是儀表板,則儀表板工作。但是,當一個工程,另一個不

+0

也許是因爲路由級聯,如果你在'get'/'sample'路徑前有'get'/:id'',那麼第二個將永遠不會被擊中,因爲它被捕獲在':id'通配符中。所以你可以嘗試改變順序或路線,或者他們在config.ru中運行的順序。無論如何,你應該在問題中展示你的代碼,現在還沒有足夠的信息來幫助你。 –

+0

我將代碼添加到了我原來的帖子中。我不認爲這是我的問題,因爲我正在制定一個固定路線'/回調',現在有一個參數。 –

+0

您是否嘗試在config.ru中更改'run'調用的順序?或者改變你添加的路線名稱?除此之外,我不知道。 –

回答

0

你可以在你的config.ru運行不同的應用程序。

裏面你config.ru,與

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

需要注意的是通過這樣做,機架將被處理路由前綴是非常重要的替代

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

run Sinatra::Application 
run App 

。因此,如果您導航到/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