[ruby] 이상적인 루비 프로젝트 구조

루비 (비 레일 / 머브 / 등) 프로젝트에 이상적인 프로젝트 구조를 개관 / 설명했습니다. 나는 그것이 다음과 같아요

app/
  bin/                  #Files for command-line execution
  lib/
    appname.rb
    appname/            #Classes and so on
  Rakefile              #Running tests
  README
  test,spec,features/   #Whichever means of testing you go for
  appname.gemspec       #If it's a gem

내가 뭔가 잘못 받았 니? 어떤 부분을 놓쳤습니까?



답변

나는 그것이 거의 자리에 있다고 생각합니다. 기본적으로 Rubygems는 lib 디렉토리를로드 경로에 추가하지만 $ : 변수를 사용하여 원하는 디렉토리를 푸시 할 수 있습니다. 즉

$:.push File.expand_path(File.dirname(__FILE__) + '/../surfcompstuff')

그것은 당신이 surfer.rb그 디렉토리에서 말하면 require "surfer"언제 어디서나 파일을 찾을 수 있음을 의미합니다.

또한 규칙으로 클래스와 싱글 톤은 파일을 가져오고 모듈은 디렉토리를 가져옵니다. 예를 들어 LolCatz모듈과 LolCatz::Moar클래스가 다음과 같은 경우

lib/
  appname.rb
  lolcatz/
    moar.rb

대부분의 라이브러리가 appname네임 스페이스 에 있기 때문에 lib / appname 폴더가있는 이유 입니다.

또한 명령 newgem --simple [projectname]을 실행하면 Ruby 프로젝트의 필수 요소 (및 확장으로 Ruby Gem)로 스캐 폴드를 빠르게 생성 할 수 있습니다. 이 작업을 수행하는 다른 도구가 있지만 newgem은 매우 일반적입니다. 나는 보통 TODO 파일과 모든 스크립트를 제거합니다.


답변

http://guides.rubygems.org/what-is-a-gem/ 에서 다음 예제를 참조하십시오.

 % tree freewill
    freewill/
    ├── bin/
       └── freewill
    ├── lib/
       └── freewill.rb
    ├── test/
       └── test_freewill.rb
    ├── README
    ├── Rakefile
    └── freewill.gemspec


답변

Rails 프로젝트 구조를 모방하려고 시도합니다. 보통 Rails를 다루는 팀이 다른 구성보다 구조를 더 잘 이해하기 때문입니다. 컨피규레이션 오버 컨벤션-레일에서 번짐.


답변

번 들러를 사용하는 경우이 명령 bundle gem app_name을 실행 하면 동일한 디렉토리 구조가 제공됩니다.

단위 테스트 대신 rspec을 사용하려면이 명령을 실행할 수 있습니다 rspec --init
( cd app_name먼저 확인하십시오 )


답변