summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Frohoff <chris@frohoff.org>2012-12-28 18:11:28 +0000
committerChris Frohoff <chris@frohoff.org>2012-12-28 18:11:28 +0000
commit21e55ca318bb829399c85b10e678b596d6fd414e (patch)
treed3029235bcc15ef06a9489df40b79b280be1397f
parente9394c48ca7aacd9d151519c1da51d18a21b351b (diff)
downloadgitlab-ce-21e55ca318bb829399c85b10e678b596d6fd414e.tar.gz
added RAILS_RELATIVE_URL_ROOT support
-rw-r--r--app/mailers/notify.rb1
-rw-r--r--config.ru5
-rw-r--r--config/gitlab.yml.example3
-rw-r--r--config/initializers/1_settings.rb4
-rw-r--r--config/routes.rb2
-rw-r--r--config/unicorn.rb.example4
-rw-r--r--lib/gitlab/backend/grack_auth.rb4
7 files changed, 16 insertions, 7 deletions
diff --git a/app/mailers/notify.rb b/app/mailers/notify.rb
index 5cd9b82900c..46b8e054509 100644
--- a/app/mailers/notify.rb
+++ b/app/mailers/notify.rb
@@ -6,6 +6,7 @@ class Notify < ActionMailer::Base
default_url_options[:host] = Gitlab.config.gitlab.host
default_url_options[:protocol] = Gitlab.config.gitlab.protocol
default_url_options[:port] = Gitlab.config.gitlab.port if Gitlab.config.gitlab_on_non_standard_port?
+ default_url_options[:script_name] = Gitlab.config.gitlab.relative_url_root
default from: Gitlab.config.gitlab.email_from
diff --git a/config.ru b/config.ru
index 5ef2a0289fe..dfd2d862237 100644
--- a/config.ru
+++ b/config.ru
@@ -1,4 +1,7 @@
# This file is used by Rack-based servers to start the application.
require ::File.expand_path('../config/environment', __FILE__)
-run Gitlab::Application
+
+map ENV['RAILS_RELATIVE_URL_ROOT'] || "/" do
+ run Gitlab::Application
+end
diff --git a/config/gitlab.yml.example b/config/gitlab.yml.example
index f47625eb132..5546632cb7f 100644
--- a/config/gitlab.yml.example
+++ b/config/gitlab.yml.example
@@ -18,6 +18,9 @@ gitlab:
host: localhost
port: 80
https: false
+ # uncomment and customize to run in non-root path
+ # note that ENV['RAILS_RELATIVE_URL_ROOT'] in config/unicorn.rb may need to be changed
+ # relative_url_root: /gitlab
## Email settings
# Email address used in the "From" field in mails sent by GitLab
diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb
index efc81611835..6b47a9cc948 100644
--- a/config/initializers/1_settings.rb
+++ b/config/initializers/1_settings.rb
@@ -25,7 +25,8 @@ class Settings < Settingslogic
[ gitlab.protocol,
"://",
gitlab.host,
- custom_port
+ custom_port,
+ gitlab.relative_url_root
].join('')
end
end
@@ -45,6 +46,7 @@ Settings.gitlab['default_projects_limit'] ||= 10
Settings.gitlab['host'] ||= 'localhost'
Settings.gitlab['https'] ||= false
Settings.gitlab['port'] ||= Settings.gitlab.https ? 443 : 80
+Settings.gitlab['relative_url_root'] ||= ''
Settings.gitlab['protocol'] ||= Settings.gitlab.https ? "https" : "http"
Settings.gitlab['email_from'] ||= "gitlab@#{Settings.gitlab.host}"
Settings.gitlab['url'] ||= Settings.send(:build_gitlab_url)
diff --git a/config/routes.rb b/config/routes.rb
index 4a02bd9f809..1259496f634 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -18,7 +18,7 @@ Gitlab::Application.routes.draw do
project_root: Gitlab.config.gitolite.repos_path,
upload_pack: Gitlab.config.gitolite.upload_pack,
receive_pack: Gitlab.config.gitolite.receive_pack
- }), at: '/:path', constraints: { path: /[-\/\w\.-]+\.git/ }
+ }), at: '/', constraints: lambda { |request| /[-\/\w\.-]+\.git/.match(request.path_info) }
#
# Help
diff --git a/config/unicorn.rb.example b/config/unicorn.rb.example
index 425dbf33f86..4852cd65daa 100644
--- a/config/unicorn.rb.example
+++ b/config/unicorn.rb.example
@@ -1,3 +1,7 @@
+# uncomment and customize to run in non-root path
+# note that config/gitlab.yml web path should also be changed
+# ENV['RAILS_RELATIVE_URL_ROOT'] = "/gitlab"
+
app_dir = "/home/gitlab/gitlab/"
worker_processes 2
working_directory app_dir
diff --git a/lib/gitlab/backend/grack_auth.rb b/lib/gitlab/backend/grack_auth.rb
index 7c31117f01d..cfad532a06c 100644
--- a/lib/gitlab/backend/grack_auth.rb
+++ b/lib/gitlab/backend/grack_auth.rb
@@ -17,10 +17,6 @@ module Grack
# Pass Gitolite update hook
ENV['GL_BYPASS_UPDATE_HOOK'] = "true"
- # Need this patch due to the rails mount
- @env['PATH_INFO'] = @request.path
- @env['SCRIPT_NAME'] = ""
-
# Find project by PATH_INFO from env
if m = /^\/([\w\.\/-]+)\.git/.match(@request.path_info).to_a
self.project = Project.find_with_namespace(m.last)