Как в Ruby on Rails сгенерировать контроллер в определенном namespace?
Для генерации контроллеров в RoR используется следующая команда:
rails g controller controller_name
После ее выполнения мы получим все необходимые файлы (в моем случае используется slim вместо erb для view-представлений):
create app/controllers/controller_name_controller.rb invoke slim create app/views/controller_name invoke test_unit create test/controllers/controller_name_controller_test.rb invoke helper create app/helpers/controller_name_helper.rb invoke test_unit invoke assets invoke coffee create app/assets/javascripts/controller_name.coffee invoke scss create app/assets/stylesheets/controller_name.scss invoke decorator create app/decorators/controller_name_decorator.rb invoke test_unit create test/decorators/controller_name_decorator_test.rb
В случаях, когда нам нужно удалить сгенерированный контроллер, мы используем "destroy" вместо "generate":
rails d controller controller_name
remove app/controllers/controller_name_controller.rb invoke slim remove app/views/controller_name invoke test_unit remove test/controllers/controller_name_controller_test.rb invoke helper remove app/helpers/controller_name_helper.rb invoke test_unit invoke assets invoke coffee remove app/assets/javascripts/controller_name.coffee invoke scss remove app/assets/stylesheets/controller_name.scss invoke decorator remove app/decorators/controller_name_decorator.rb invoke test_unit remove test/decorators/controller_name_decorator_test.rb
В случаях с namespace, мы добавляем нужное пространство имен в нашу команду через слэш (для примера добавим admin) перед именем контроллера.
namespace_name/controller_name # порядок
Пример:
rails g controller admin/controller_name
create app/controllers/admin/controller_name_controller.rb invoke slim create app/views/admin/controller_name invoke test_unit create test/controllers/admin/controller_name_controller_test.rb invoke helper create app/helpers/admin/controller_name_helper.rb invoke test_unit invoke assets invoke coffee create app/assets/javascripts/admin/controller_name.coffee invoke scss create app/assets/stylesheets/admin/controller_name.scss invoke decorator create app/decorators/admin/controller_name_decorator.rb invoke test_unit create test/decorators/admin/controller_name_decorator_test.rb
И обратное действие (удаление контроллера):
rails d controller admin/controller_name
remove app/controllers/admin/controller_name_controller.rb invoke slim remove app/views/admin/controller_name invoke test_unit remove test/controllers/admin/controller_name_controller_test.rb invoke helper remove app/helpers/admin/controller_name_helper.rb invoke test_unit invoke assets invoke coffee remove app/assets/javascripts/admin/controller_name.coffee invoke scss remove app/assets/stylesheets/admin/controller_name.scss invoke decorator remove app/decorators/admin/controller_name_decorator.rb invoke test_unit remove test/decorators/admin/controller_name_decorator_test.rb