2017-08-29 10 views
0

私はWebhookからデータを受け取るダッシュのアプリケーションにルートを追加しようとしています。dashing 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が最後の場合はダッシュボードが機能します。しかし、1つが動作しても、もう1つが動作しない場合、

+0

に相当します'get/sample''ルートの前に' get '/:id''がある場合、 ':id'ワイルドカードで捕捉されるので、2番目のルートは決してヒットしません。ですから、あなたは順序やルート、あるいは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 
関連する問題