diff options
author | Lin Jen-Shin <godfat@godfat.org> | 2018-10-17 21:29:39 +0800 |
---|---|---|
committer | Lin Jen-Shin <godfat@godfat.org> | 2018-10-26 14:27:05 +0800 |
commit | f1701c0fec096184a5908df65187573209dd6254 (patch) | |
tree | a0e868088b9a8b70fbe25fcb4ed799c2c350f799 | |
parent | 1581f75fb511fed171e8105c1a0811561a2f2dcc (diff) | |
download | gitlab-ce-f1701c0fec096184a5908df65187573209dd6254.tar.gz |
Make it possible to add EE only route
And if it cannot find any routes, raise an error
-rw-r--r-- | doc/development/ee_features.md | 15 | ||||
-rw-r--r-- | lib/gitlab/patch/draw_route.rb | 20 |
2 files changed, 26 insertions, 9 deletions
diff --git a/doc/development/ee_features.md b/doc/development/ee_features.md index 2415373f2d1..bad9909ed43 100644 --- a/doc/development/ee_features.md +++ b/doc/development/ee_features.md @@ -334,12 +334,17 @@ full implementation details. ### 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. +When we add `draw :admin` in `config/routes.rb`, the application will try to +load the file located in `config/routes/admin.rb`, and also try to load the +file located in `ee/config/routes/admin.rb`. -So if we want to extend a particular route file, just add the same file -located in `ee/config/routes`. +It should at least load one file, at most two files. If it cannot find any +files, an error will be raised. + +This means if we want to extend a particular CE route file, just add the same +file located in `ee/config/routes`. If we want to add an EE only route, we +could still use `draw :ee_only` and add `ee/config/routes/ee_only.rb` without +adding `config/routes/ee_only.rb`. ### Code in `app/controllers/` diff --git a/lib/gitlab/patch/draw_route.rb b/lib/gitlab/patch/draw_route.rb index 4396e811a8c..f8ae6f7afc0 100644 --- a/lib/gitlab/patch/draw_route.rb +++ b/lib/gitlab/patch/draw_route.rb @@ -5,16 +5,28 @@ module Gitlab module Patch module DrawRoute + RoutesNotFound = Class.new(StandardError) + def draw(routes_name) - instance_eval(File.read(Rails.root.join("config/routes/#{routes_name}.rb"))) + draw_ce(routes_name) | draw_ee(routes_name) || + raise(RoutesNotFound.new("Cannot find #{routes_name}")) + end - draw_ee(routes_name) + def draw_ce(routes_name) + draw_route(Rails.root.join("config/routes/#{routes_name}.rb")) end def draw_ee(routes_name) - path = Rails.root.join("ee/config/routes/#{routes_name}.rb") + draw_route(Rails.root.join("ee/config/routes/#{routes_name}.rb")) + end - instance_eval(File.read(path)) if File.exist?(path) + def draw_route(path) + if File.exist?(path) + instance_eval(File.read(path)) + true + else + false + end end end end |