2011-10-31 2 views
0

내 로컬 Apache2에 여러 응용 프로그램이 있습니다. 내 httpd.conf 파일은 다음과 같습니다Apache2의 Sinatra 응용 프로그램에서 스마트 루팅

<VirtualHost *:80> 
    ServerName localhost 
    DocumentRoot /var/www/ 

    RackBaseURI /app1 
    RackBaseURI /app2 
    RackBaseURI /app3 
</VirtualHost> 

모든 응용 프로그램의 config.ru이 같은 같습니다

require './app' 
root_dir = File.dirname(__FILE__) 
set :environment, ENV['RACK_ENV'].to_sym 
set :root, root_dir 
set :app_file, File.join(root_dir, 'app.rb') 
disable :run 
run Sinatra::Application 

의/var/www /에서 디렉토리에서 나는 각각의 공용 폴더에 대한 심볼릭 링크가 내 응용 프로그램. (APP1/공공 -> 링크라는 APP1, APP2/공공 -> 링크라는 APP2 등)의 I/APP1이 localhost를 열면

가 시작 행동 ('/'APP1의 수)

get '/' do 
    erb :main 
end 

지금까지 너무 좋아서 모든 것이 작동합니다. main.erb보기 (get '/'aciton에서로드 됨) public/js 디렉토리에서 일부 javascript를로드하고 있습니다.

여기 내 문제가 나타납니다. 나는 ("/ ...../APP1"SRC = 초점) 그런 그들을로드 할 수 있습니다

<script type="text/JavaScript" src="/app1/js/jquery.js"></script> 

나는 그런 그들을로드하고 싶습니다 동안 :

<script type="text/JavaScript" src="/js/jquery.js"></script> 

을 이유는 내가 이퀄라이저에 내 애플리케이션을 업로드 할 때이다. Heorku 내 코드에서 모든 "/ app1"을 제거하기 전까지는 더 이상 작동하지 않습니다.

요약하면 로컬 루트에서 내 Sinatra app1은 localhost /를 취합니다. 실제 루트는 localhost/app1 /이어야하지만 root로 설정하십시오. 반면에 heroku에서는 root로 app1.heroku.com/을 사용합니다.

그래서 각 응용 프로그램을 로컬 호스트/appX/루트로 만들려면 어떻게해야합니까?

편집 :

이 문제는 포함 자바 스크립트 (/ APP1/some_action) 는이 로컬 호스트는 이렇게 될 :

$(document).ready(function(){ 
    $("#a_button").click(function(){ 
    $("#some_div").load("/app1/some_action"); 
    }); 
}); 

서버에있을 수있다하지만 이렇게 :

$(document).ready(function(){ 
    $("#a_button").click(function(){ 
    $("#some_div").load("/some_action"); 
    }); 
}); 

답변

1

URL에 적절한 접두어를 추가하는 도우미 메서드를 만들 수 있습니다. 환경에, 또는 static assets sinatra 도우미를 사용하십시오.

+0

내 문제 중 절반 만 해결합니다. 그것은 자바 스크립트를 수정하지 않습니다 - 세부 사항은 질문에 추가되었습니다. – gisek

관련 문제