На моем локальном Apache2 у меня есть несколько приложений.Мой httpd.conf выглядит так:
<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 / public -> ссылка с именем app1, app2 / public -> ссылка с именем app2 и т. д.)
Если я открою localhost / app1, запускается действие (получить '/' из app1)
get '/' do
erb :main
end
Пока все хорошо, все работает.В представлении main.erb (загруженном в get '/' aciton) я загружаю некоторые javascripts из каталога public / js.
И тут возникает моя проблема.Я должен загрузить их так (сосредоточиться на src = "/ app1 /....."):
<script type="text/JavaScript" src="/app1/js/jquery.js"></script>
Хотя я хотел бы загрузить их так:
<script type="text/JavaScript" src="/js/jquery.js"></script>
Причина в том, что когда я загружаю свое приложение в eq Heorku, оно больше не работает, пока я не удалю все "/ app1" из своего кода.
Подводя итог, на localhost мое приложение Sinatra1 принимает localhost/ как root, хотя реальный корень должен быть localhost / app1 /.С другой стороны, на heroku он принимает app1.heroku.com/ в качестве пользователя root, что нормально.
Итак, вопрос в том, что можно сделать, чтобы каждое из моих приложений приняло localhost / appX / в качестве пользователя root?
Редактировать:
Эта проблема также включает в себя javascripts: (/ 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");
});
});