2011-04-11 4 views
2

레일 3.0.6을 사용하고 있습니다.Rails 3 앱에서 '/'가 Rack 애플리케이션과 정확히 일치하지만 다른 경로는없는 이유는 무엇입니까?

class ExampleApp < Sinatra::Base 
    get '/' do 
    "Hello from Sinatra" 
    end 
end 

그리고 나는 application.rb의 config.auto_load_paths의 구성을 자동 로딩 해요 : 내 lib 디렉토리에서

나는 단순히시나 응용 프로그램입니다 example_app.rb을 보유하고 있습니다. 내 루트 파일에서

, 나는 단지이 있습니다

match "/" => ExampleApp 

을 내가 레일 서버 (에 WEBrick)를 실행할 때 잘 일치합니다. 그러나 시도한 경우 :

match "/example" => ExampleApp 

localhost : 3000/example을 (를) 방문하면 '경로 일치 없음/예'오류가 발생합니다. 나는 시도하고 잘 작동 컨트롤러 액션에 대한 일치 '/ 예',하지만 위까지 그시나 응용 프로그램에 경우

example /example(.:format) {:to=>ExampleApp} 

, 그래서 무슨 일인지 모르겠어요 : 경로하지만 레이크 경로를 보여줍니다 실행 . 내가 잃어버린 작은 것이 레일스 사이트의 라우팅 문서에서 찾을 수 없다는 것을 알고있다.

도움 주셔서 감사합니다.

답변

3

문제는 Sinatra 앱이 /에 대한 요청에만 응답한다는 것입니다. 당신은

get '/example' 

를 추가하거나 난 아직도 내가 일치하는 '/ 예를 들어'내시나 경로를 변경하면 오류 "어떤 경로가 일치하지 않습니다"얻을 *

get '*' do 
    "Hello from Sinatra" 
end 
+0

를 사용하여 와일드 카드 일치 할 중 하나가 필요합니다. 또한 이것은 http://yehudakatz.com/2009/12/26/the-rails-3-router-rack-it-up/에서 읽은 블로그 게시물과 충돌하는 것 같습니다. '/ home'이 예제로 사용되었습니다. Rails 3 경로는 Sinatra 앱과 잘 일치해야하며 '/'경로 만 사용해야합니다. – rjoll

+0

방금 ​​새 앱을 만들었고 시도했습니다. Yehuda의 예제가 작동하지 않는 것 같습니다. (결국 실수 일 수 있습니다.)하지만 myapp'에서'match '/ example', : to => MyApp' 및'get/example ''을 수행하면 유효한 응답을 얻으십시오. 당신이 제대로하고 있는지 확인해 주시겠습니까? 나는 Rails 3.0.6과 Sinatra 1.2.2를 사용하여 테스트했다. – Dogbert

+0

좋아, 다른 응용 프로그램을 만든 후에 예제를 사용하여 작업하게되었습니다. Webrick을 원래의 예제 인 Webrick을 다시 시작해야 할만큼 간단했습니다. 고맙습니다! – rjoll

관련 문제