Merge branch 'if-doc-ee_specific_api-params' into 'master'
Update development doc on EE specific API params See merge request gitlab-org/gitlab-ce!28608
This commit is contained in:
commit
450f684474
|
@ -557,40 +557,56 @@ due to `prepend`, but Grape is complex internally and we couldn't easily do
|
||||||
that, so we'll follow regular object-oriented practices that we define the
|
that, so we'll follow regular object-oriented practices that we define the
|
||||||
interface first here.
|
interface first here.
|
||||||
|
|
||||||
For example, suppose we have a few more optional params for EE, given this CE
|
For example, suppose we have a few more optional params for EE. We can move the
|
||||||
API code:
|
params out of the `Grape::API` class to a helper module, so we can `prepend` it
|
||||||
|
before it would be used in the class.
|
||||||
|
|
||||||
```ruby
|
```ruby
|
||||||
module API
|
module API
|
||||||
class MergeRequests < Grape::API
|
class Projects < Grape::API
|
||||||
# EE::API::MergeRequests would override the following helpers
|
helpers Helpers::ProjectsHelpers
|
||||||
helpers do
|
end
|
||||||
params :optional_params_ee do
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
Given this CE API `params`:
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
module API
|
||||||
|
module Helpers
|
||||||
|
module ProjectsHelpers
|
||||||
|
extend ActiveSupport::Concern
|
||||||
|
extend Grape::API::Helpers
|
||||||
|
|
||||||
|
params :optional_project_params_ce do
|
||||||
|
# CE specific params go here...
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
params :optional_params do
|
params :optional_project_params_ee do
|
||||||
# CE specific params go here...
|
end
|
||||||
|
|
||||||
use :optional_params_ee
|
params :optional_project_params do
|
||||||
|
use :optional_project_params_ce
|
||||||
|
use :optional_project_params_ee
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
API::MergeRequests.prepend(EE::API::MergeRequests)
|
API::Helpers::ProjectsHelpers.prepend(EE::API::Helpers::ProjectsHelpers)
|
||||||
```
|
```
|
||||||
|
|
||||||
And then we could override it in EE module:
|
We could override it in EE module:
|
||||||
|
|
||||||
```ruby
|
```ruby
|
||||||
module EE
|
module EE
|
||||||
module API
|
module API
|
||||||
module MergeRequests
|
module Helpers
|
||||||
extend ActiveSupport::Concern
|
module ProjectsHelpers
|
||||||
|
extend ActiveSupport::Concern
|
||||||
|
|
||||||
prepended do
|
prepended do
|
||||||
helpers do
|
params :optional_project_params_ee do
|
||||||
params :optional_params_ee do
|
|
||||||
# EE specific params go here...
|
# EE specific params go here...
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -600,9 +616,6 @@ module EE
|
||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
This way, the only difference between CE and EE for that API file would be
|
|
||||||
`prepend EE::API::MergeRequests`.
|
|
||||||
|
|
||||||
#### EE helpers
|
#### EE helpers
|
||||||
|
|
||||||
To make it easy for an EE module to override the CE helpers, we need to define
|
To make it easy for an EE module to override the CE helpers, we need to define
|
||||||
|
|
Loading…
Reference in New Issue