Ответ 1
.keep
файлы - это 0 байтовых файлов, которые предназначены для остановки пустых папок от игнорирования всеми видами процессов. Ни о чем не беспокоиться.
Я изучаю рельсы.
Где-то вдоль линии я заметил, что, казалось бы, случайные папки и файлы появляются в моем каталоге приложений rails. В некоторых папках есть папка concerns
с файлом .keep
внутри него. Файл .keep
кажется пустым. В других папках нет папки concerns
, но присутствует пустой файл .keep
.
Кто-нибудь знает, что такое сделка с этими файлами/папками?
.keep
файлы - это 0 байтовых файлов, которые предназначены для остановки пустых папок от игнорирования всеми видами процессов. Ни о чем не беспокоиться.
.keep файлы особенно полезны, когда вы хотите зафиксировать пустые каталоги с помощью git.
Забавный факт, имя .keep
или .gitkeep
бессмысленно. вы можете вызвать файл .foo
для того же эффекта, его просто читаемое соглашение.
Файлы .keep
также используются для поддержки переноса из одного vcs в другой, что предотвращает удаление важных каталогов, когда вы не объединяете что-то, что приведет к тому, что эти каталоги будут пустыми.
Например, рассмотрим script, который пытается cd dir
в каталог, который не отслеживается git.
Это парадигма разработки программного обеспечения, которая направлена на уменьшение числа решений, которые разработчики должны делать, приобретая простоту, но не обязательно теряя гибкость.
Концерны - это простая, но мощная концепция. Он существует для повторного использования кода. В принципе, идея состоит в том, чтобы извлечь общие и/или контекстно-зависимые фрагменты кода, чтобы очистить модели и избежать их слишком толстых и неуправляемых.
Я хотел бы четко указать, что вы должны использовать служебные объекты для обеспечения функциональности, которая не связана с конкретным объектом. Например, в организации много пользователей. Теперь администратору организации необходимо экспортировать 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, вы можете перейти к этой логике в вышеуказанном классе. Этот подход позволяет объекту (в данном случае, модели организации) очистить от кода, который не должен быть его ответственностью. Общий принцип, которым я следую, заключается в следующем: если код, который он модифицирует сам объект, переместите код в объект службы.
Примечание. Ваш вопрос касался проблем, но я подумал о добавлении некоторых дополнительных материалов, которые я придерживаюсь, чтобы сохранить базу кода чистой и управляемой, поскольку она может помочь другим программистам. Этот подход является спорным.