Случайные папки "проблем" и файлы ".keep"

Я изучаю рельсы.

Где-то вдоль линии я заметил, что, казалось бы, случайные папки и файлы появляются в моем каталоге приложений rails. В некоторых папках есть папка concerns с файлом .keep внутри него. Файл .keep кажется пустым. В других папках нет папки concerns, но присутствует пустой файл .keep.

Кто-нибудь знает, что такое сделка с этими файлами/папками?

Ответ 1

.keep файлы - это 0 байтовых файлов, которые предназначены для остановки пустых папок от игнорирования всеми видами процессов. Ни о чем не беспокоиться.

Ответ 2

.keep файлы особенно полезны, когда вы хотите зафиксировать пустые каталоги с помощью git.

Забавный факт, имя .keep или .gitkeep бессмысленно. вы можете вызвать файл .foo для того же эффекта, его просто читаемое соглашение.

Файлы .keep также используются для поддержки переноса из одного vcs в другой, что предотвращает удаление важных каталогов, когда вы не объединяете что-то, что приведет к тому, что эти каталоги будут пустыми.

Например, рассмотрим script, который пытается cd dir в каталог, который не отслеживается git.

Это парадигма разработки программного обеспечения, которая направлена ​​на уменьшение числа решений, которые разработчики должны делать, приобретая простоту, но не обязательно теряя гибкость.

Ответ 3

Концерны - это простая, но мощная концепция. Он существует для повторного использования кода. В принципе, идея состоит в том, чтобы извлечь общие и/или контекстно-зависимые фрагменты кода, чтобы очистить модели и избежать их слишком толстых и неуправляемых.

Я хотел бы четко указать, что вы должны использовать служебные объекты для обеспечения функциональности, которая не связана с конкретным объектом. Например, в организации много пользователей. Теперь администратору организации необходимо экспортировать CSV всех пользователей для этой организации. Этот код может быть помещен в модель организации, но поскольку он не является ответственностью объекта организации, этот код должен быть помещен в класс, где u просто передает объект организации и возвращает CSV всех пользователей.

 class Services::GenerateCsv
     def self.get_users org
         #add logic the fetch users for the org and generate the CSV and return the CSV data
     end
 end

Всякий раз, когда вам нужна генерация CSV, вы можете перейти к этой логике в вышеуказанном классе. Этот подход позволяет объекту (в данном случае, модели организации) очистить от кода, который не должен быть его ответственностью. Общий принцип, которым я следую, заключается в следующем: если код, который он модифицирует сам объект, переместите код в объект службы.

Примечание. Ваш вопрос касался проблем, но я подумал о добавлении некоторых дополнительных материалов, которые я придерживаюсь, чтобы сохранить базу кода чистой и управляемой, поскольку она может помочь другим программистам. Этот подход является спорным.