루비 (비 레일 / 머브 / 등) 프로젝트에 이상적인 프로젝트 구조를 개관 / 설명했습니다. 나는 그것이 다음과 같아요
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
먼저 확인하십시오 )