summaryrefslogtreecommitdiff
path: root/doc/development/gotchas.md
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-09-20 13:18:24 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2021-09-20 13:18:24 +0000
commit0653e08efd039a5905f3fa4f6e9cef9f5d2f799c (patch)
tree4dcc884cf6d81db44adae4aa99f8ec1233a41f55 /doc/development/gotchas.md
parent744144d28e3e7fddc117924fef88de5d9674fe4c (diff)
downloadgitlab-ce-0653e08efd039a5905f3fa4f6e9cef9f5d2f799c.tar.gz
Add latest changes from gitlab-org/gitlab@14-3-stable-eev14.3.0-rc42
Diffstat (limited to 'doc/development/gotchas.md')
-rw-r--r--doc/development/gotchas.md70
1 files changed, 0 insertions, 70 deletions
diff --git a/doc/development/gotchas.md b/doc/development/gotchas.md
index 40598eaff95..fbb6b0219aa 100644
--- a/doc/development/gotchas.md
+++ b/doc/development/gotchas.md
@@ -203,76 +203,6 @@ in an initializer.
- Stack Overflow: [Why you should not write inline JavaScript](https://softwareengineering.stackexchange.com/questions/86589/why-should-i-avoid-inline-scripting)
-## Auto loading
-
-Rails auto-loading on `development` differs from the load policy in the `production` environment.
-In development mode, `config.eager_load` is set to `false`, which means classes
-are loaded as needed. With the classic Rails autoloader, it is known that this can lead to
-[Rails resolving the wrong class](https://guides.rubyonrails.org/v5.2/autoloading_and_reloading_constants.html#when-constants-aren-t-missed-relative-references)
-if the class name is ambiguous. This can be fixed by specifying the complete namespace to the class.
-
-### Error prone example
-
-```ruby
-# app/controllers/application_controller.rb
-class ApplicationController < ActionController::Base
- ...
-end
-
-# app/controllers/projects/application_controller.rb
-class Projects::ApplicationController < ApplicationController
- ...
- private
-
- def project
- ...
- end
-end
-
-# app/controllers/projects/submodule/some_controller.rb
-module Projects
- module Submodule
- class SomeController < ApplicationController
- def index
- @some_id = project.id
- end
- end
- end
-end
-```
-
-In this case, if for any reason the top level `ApplicationController`
-is loaded but `Projects::ApplicationController` is not, `ApplicationController`
-would be resolved to `::ApplicationController` and then the `project` method is
-undefined, causing an error.
-
-#### Solution
-
-```ruby
-# app/controllers/projects/submodule/some_controller.rb
-module Projects
- module Submodule
- class SomeController < Projects::ApplicationController
- def index
- @some_id = project.id
- end
- end
- end
-end
-```
-
-By specifying `Projects::`, we tell Rails exactly what class we are referring
-to and we would avoid the issue.
-
-NOTE:
-This problem disappears as soon as we upgrade to Rails 6 and use the Zeitwerk autoloader.
-
-### Further reading
-
-- Rails Guides: [Autoloading and Reloading Constants (Classic Mode)](https://guides.rubyonrails.org/autoloading_and_reloading_constants_classic_mode.html)
-- Ruby Constant lookup: [Everything you ever wanted to know about constant lookup in Ruby](https://cirw.in/blog/constant-lookup)
-- Rails 6 and Zeitwerk autoloader: [Understanding Zeitwerk in Rails 6](https://medium.com/cedarcode/understanding-zeitwerk-in-rails-6-f168a9f09a1f)
-
## Storing assets that do not require pre-compiling
Assets that need to be served to the user are stored under the `app/assets` directory, which is later pre-compiled and placed in the `public/` directory.