임의의 ‘우려 사항’폴더 및 ‘.keep’파일 내 rails 앱의 디렉토리에

저는 레일을 배우고 있습니다.

선을 따라 어딘가에 내 rails 앱의 디렉토리에 임의의 폴더와 파일이 나타나는 것을 발견했습니다. 일부 폴더에는 파일이 들어 있는 concerns폴더가 .keep있습니다. .keep파일이 비어있는 상태로 나타납니다. 다른 폴더에는 concerns폴더가 없지만 빈 .keep파일이 있습니다.

이 파일 / 폴더의 거래가 무엇인지 아는 사람이 있습니까?



답변

.keep파일은 모든 종류의 프로세스에서 빈 폴더를 무시하지 못하도록하는 0 바이트 파일입니다. 걱정할 것이 없습니다.


답변

.keep 파일은 git으로 빈 디렉토리를 커밋하려는 경우 특히 유용합니다.

재미있는 사실은 이름 .keep이나 .gitkeep의미가 없습니다. .foo동일한 효과를 위해 파일 을 호출 할 수 있습니다 . 단순히 읽을 수있는 규칙입니다.

.keep해당 디렉토리가 비어 원인이 될 것이라고 할 때 병합 해제 뭔가 파일은 중요한 디렉토리의 삭제를 방지 한 VCS에서 다른 원조 운반 거기에 있습니다.

예를 들어, cd dirgit이 추적하지 않는 디렉토리로 시도하는 스크립트를 고려하십시오 .

개발자가 내리는 결정의 수를 줄이고 단순성을 확보하지만 반드시 유연성을 잃지 않는 것은 소프트웨어 설계 패러다임입니다.


답변

우려 사항은 간단하지만 강력한 개념입니다. 코드 재사용을 위해 존재합니다. 기본적으로 아이디어는 모델을 정리하고 너무 뚱뚱해지고 관리 할 수 ​​없게되는 것을 방지하기 위해 공통 및 / 또는 컨텍스트 특정 코드 덩어리를 추출하는 것입니다.

특정 개체의 문제가 아닌 기능을 제공하기 위해 서비스 개체를 사용해야 함을 명시 적으로 지정하고 싶습니다. 예를 들어 조직에는 많은 사용자가 있습니다. 이제 조직의 관리자는이 조직에 대한 모든 사용자의 CSV를 내 보내야합니다. 이 코드는 조직 모델에 배치 할 수 있지만 조직 객체의 책임이 아니기 때문에이 코드는 조직 객체를 전달하고 모든 사용자의 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 생성이 필요할 때마다 위의 클래스에 해당 논리를 배치 할 수 있습니다. 이 접근 방식은 개체 (이 경우 조직 모델)를 책임이어서는 안되는 코드에서 깨끗하게 유지합니다. 내가 따르는 일반적인 원칙은 코드가 self 객체를 수정하는 경우 코드를 서비스 객체로 이동하는 것입니다.

참고 : 귀하의 질문은 우려 사항에 관한 것이었지만 동료 프로그래머에게 도움이 될 수 있으므로 코드 기반을 깨끗하고 관리하기 쉽게 유지하기 위해 따르는 몇 가지 추가 사항을 추가하려고 생각했습니다. 위의 접근 방식은 논쟁의 여지가 있습니다.