2013-07-15 1 views
1

나는 레일스가 : root/app 디렉토리의 경로를 자동으로로드하는 방법을 정말 좋아합니다. 루비 자동로드를 사방에 사용하는 것보다는 내가 만드는 보석에서 비슷한 것을하고 싶습니다.보석의 자동로드 경로 기능 얻기

+0

바꾸려는 코드의 예를 들어주세요. –

+0

폴더에서 모든 파일을로드하거나 파일이 변경되면 자동으로 다시로드하려고합니까? –

+0

ruby ​​autoload를 사용하여 폴더 계층의 모든 파일을로드하려고합니다. 그래서 파일을 필요로하지 않고, 상수가 호출 될 때 dir 구조에서 파일을 자동로드하려고합니다. –

답변

1

Autoload은 모듈에서 심볼 또는 문자열로 매핑을 파일 이름으로 정의합니다.

디렉토리의 모든 파일을 자동로드하려면 파일을 열지 않고 파일이 나타내는 모듈을 알아야합니다.

명명 규칙을 따르면됩니다.

libdirs = File.join("**", "lib") 
Dir.glob(libdirs).each{ |filename| 
    autoload(filename_to_module(filename), filename) 
} 

filename_to_moduleString#camelize 같은 것을 사용하십시오 : 당신이 방법 filename_to_module에서 국제 대회를 캡슐화 가정, 당신이 오직 할 필요가있는 폴더를 통해 재귀 적으로 반복하고 같은 autoload(filename_to_module(filename), filename)

뭔가를 호출입니다 기능. 난 이미 ActiveSupport에 대한 의존성이 없다면 직접 구현할 것입니다.