summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLin Jen-Shin <godfat@godfat.org>2018-10-15 21:59:00 +0800
committerLin Jen-Shin <godfat@godfat.org>2018-10-26 14:27:05 +0800
commit1581f75fb511fed171e8105c1a0811561a2f2dcc (patch)
tree0bf87a3d3731017554446a3b02b7ba534f4d5395
parent679c0048a8f679aad456c02e30486150bbd0d93d (diff)
downloadgitlab-ce-1581f75fb511fed171e8105c1a0811561a2f2dcc.tar.gz
Put EE routes in EE files under EE directories
-rw-r--r--.rubocop.yml1
-rw-r--r--config/initializers/routing_draw.rb8
-rw-r--r--config/routes/admin.rb2
-rw-r--r--config/routes/group.rb3
-rw-r--r--doc/development/ee_features.md21
-rw-r--r--lib/gitlab/patch/draw_route.rb21
6 files changed, 43 insertions, 13 deletions
diff --git a/.rubocop.yml b/.rubocop.yml
index 0f4018326a1..5d2c5c7cf49 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -76,6 +76,7 @@ Naming/FileName:
- 'qa/qa/specs/**/*'
- 'qa/bin/*'
- 'config/**/*'
+ - 'ee/config/**/*'
- 'lib/generators/**/*'
- 'locale/unfound_translations.rb'
- 'ee/locale/unfound_translations.rb'
diff --git a/config/initializers/routing_draw.rb b/config/initializers/routing_draw.rb
index 25003cf0239..f0f74954eef 100644
--- a/config/initializers/routing_draw.rb
+++ b/config/initializers/routing_draw.rb
@@ -1,7 +1,3 @@
# Adds draw method into Rails routing
-# It allows us to keep routing splitted into files
-class ActionDispatch::Routing::Mapper
- def draw(routes_name)
- instance_eval(File.read(Rails.root.join("config/routes/#{routes_name}.rb")))
- end
-end
+# It allows us to keep routing split into files
+ActionDispatch::Routing::Mapper.prepend Gitlab::Patch::DrawRoute
diff --git a/config/routes/admin.rb b/config/routes/admin.rb
index fb29c4748c1..af333bdc748 100644
--- a/config/routes/admin.rb
+++ b/config/routes/admin.rb
@@ -71,6 +71,7 @@ namespace :admin do
resource :logs, only: [:show]
resource :health_check, controller: 'health_check', only: [:show]
resource :background_jobs, controller: 'background_jobs', only: [:show]
+
resource :system_info, controller: 'system_info', only: [:show]
resources :requests_profiles, only: [:index, :show], param: :name, constraints: { name: /.+\.html/ }
@@ -104,6 +105,7 @@ namespace :admin do
resource :application_settings, only: [:show, :update] do
resources :services, only: [:index, :edit, :update]
+
get :usage_data
put :reset_registration_token
put :reset_health_check_token
diff --git a/config/routes/group.rb b/config/routes/group.rb
index 602bbe837cf..2328b50b760 100644
--- a/config/routes/group.rb
+++ b/config/routes/group.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
resources :groups, only: [:index, :new, :create] do
post :preview_markdown
end
@@ -63,7 +65,6 @@ constraints(::Constraints::GroupUrlConstrainer.new) do
end
end
- # On CE only index and show actions are needed
resources :boards, only: [:index, :show]
resources :runners, only: [:index, :edit, :update, :destroy, :show] do
diff --git a/doc/development/ee_features.md b/doc/development/ee_features.md
index f9e6efa2c30..2415373f2d1 100644
--- a/doc/development/ee_features.md
+++ b/doc/development/ee_features.md
@@ -171,7 +171,7 @@ There are a few gotchas with it:
class Base
def execute
return unless enabled?
-
+
# ...
# ...
end
@@ -185,12 +185,12 @@ There are a few gotchas with it:
class Base
def execute
return unless enabled?
-
+
do_something
end
-
+
private
-
+
def do_something
# ...
# ...
@@ -204,14 +204,14 @@ There are a few gotchas with it:
```ruby
module EE::Base
extend ::Gitlab::Utils::Override
-
+
override :do_something
def do_something
# Follow the above pattern to call super and extend it
end
end
```
-
+
This would require updating CE first, or make sure this is back ported to CE.
When prepending, place them in the `ee/` specific sub-directory, and
@@ -332,6 +332,15 @@ full implementation details.
[ce-mr-full-private]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/12373
[ee-mr-full-private]: https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/2199
+### Code in `config/routes`
+
+When we add `draw :admin` in `config/routes.rb`, the application will also
+load the file located in `config/routes/admin.rb`, and also
+`ee/config/routes/admin.rb` if the file exists.
+
+So if we want to extend a particular route file, just add the same file
+located in `ee/config/routes`.
+
### Code in `app/controllers/`
In controllers, the most common type of conflict is with `before_action` that
diff --git a/lib/gitlab/patch/draw_route.rb b/lib/gitlab/patch/draw_route.rb
new file mode 100644
index 00000000000..4396e811a8c
--- /dev/null
+++ b/lib/gitlab/patch/draw_route.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+# We're patching `ActionDispatch::Routing::Mapper` in
+# config/initializers/routing_draw.rb
+module Gitlab
+ module Patch
+ module DrawRoute
+ def draw(routes_name)
+ instance_eval(File.read(Rails.root.join("config/routes/#{routes_name}.rb")))
+
+ draw_ee(routes_name)
+ end
+
+ def draw_ee(routes_name)
+ path = Rails.root.join("ee/config/routes/#{routes_name}.rb")
+
+ instance_eval(File.read(path)) if File.exist?(path)
+ end
+ end
+ end
+end