ruby의 require
메소드는 lib_path를 검색하고 필요한 경우 찾은 첫 번째 일치하는 파일을로드합니다. 로드 될 파일의 경로를 인쇄 할 여지가 있습니다. 내가 찾고있는, 이상적으로 내장 된, 기능은 bash의 which
명령과 유사하며 그렇게 간단 할 수도 있기를 바란다. 감사.ruby require 메소드가로드 할 파일을 검색 하시겠습니까?
3
A
답변
3
기본 제공 기능에 대해 모르겠지만 자신 만의 기능을 정의하는 것은 어렵지 않습니다. 여기 this question로부터 구성된 용액이다 :
def which(string)
$:.each do |p|
if File.exist? File.join(p, string)
puts File.join(p, string)
break
end
end
end
which 'nokogiri'
#=> /opt/local/lib/ruby1.9/gems/1.9.1/gems/nokogiri-1.4.1/lib/nokogiri
설명 : $:
는 사전 정의 된 변수이다. load
또는 require
과 같은 파일을 검색 할 수있는 장소입니다. which
메서드는 호출 한 파일을 찾는 각 경로를 반복합니다. 일치하는 항목을 찾으면 파일 경로를 반환합니다.
which
과 같은 required
파일의 전체 파일 경로를 보여주는 한 줄만 출력한다고 가정합니다. 당신은 또한 파일을보고 싶은 경우 required
파일 자체를로드, 링크 된 문제의 솔루션과 같은 더 적합 할 수 있습니다 :
module Kernel
def require_and_print(string)
$:.each do |p|
if File.exist? File.join(p, string)
puts File.join(p, string)
break
end
end
require_original(string)
end
alias_method :require_original, :require
alias_method :require, :require_and_print
end
require 'nokogiri'
#=> /opt/local/lib/ruby1.9/gems/1.9.1/gems/nokogiri-1.4.1/lib/nokogiri
# /opt/local/lib/ruby1.9/gems/1.9.1/gems/rubygems-update-1.3.5/lib/rbconfig
# /opt/local/lib/ruby1.9/gems/1.9.1/gems/nokogiri-1.4.1/lib/nokogiri/xml
# /opt/local/lib/ruby1.9/gems/1.9.1/gems/nokogiri-1.4.1/lib/nokogiri/xml/pp
# /opt/local/lib/ruby1.9/gems/1.9.1/gems/nokogiri-1.4.1/lib/nokogiri/xml/sax
# /opt/local/lib/ruby1.9/gems/1.9.1/gems/nokogiri-1.4.1/lib/nokogiri/xml/node
# /opt/local/lib/ruby1.9/gems/1.9.1/gems/nokogiri-1.4.1/lib/nokogiri/xml/xpath
# /opt/local/lib/ruby1.9/gems/1.9.1/gems/nokogiri-1.4.1/lib/nokogiri/xslt
# /opt/local/lib/ruby1.9/gems/1.9.1/gems/nokogiri-1.4.1/lib/nokogiri/html
# /opt/local/lib/ruby1.9/gems/1.9.1/gems/nokogiri-1.4.1/lib/nokogiri/css
# /opt/local/lib/ruby1.9/1.9.1/racc/parser.rb
파일 이름 # (NO .rb 접미사가) 내가 무엇을 사용
1
$ 보석 ...
관련 문제
- 1. Ruby require 'rack'에 실패했습니다.
- 2. Ruby - require 'filename'을 호출하여 반복 실행
- 3. Ruby ($ :)에서 require 경로를 일시적으로 변경하려면 어떻게해야합니까?
- 4. require 'rubygems'
- 5. mod_perl의 Perl에서`use`와`require` 문으로 현재 소스 파일을 검색 할 디렉토리를 만드는 표준 방법은 무엇입니까?
- 6. Ruby : 메모리에 이진 파일을 실행 하시겠습니까?
- 7. require ':로드 할 파일이 없습니다. - active_support/core_ext/logger
- 8. 서버에 업로드하기 전에 첨부 파일을 검색 하시겠습니까?
- 9. 파일을 검색 할 Python 스크립트
- 10. `autoload`는 에러를 발생 시키지만`require`는 않습니다 (ruby)
- 11. XLSM 파일을 데이터베이스 열에 저장하고 검색 하시겠습니까?
- 12. Ruby 및/또는 Rails 캐싱에 require() 스크립트가 필요합니까?
- 13. 검색 결과를 검색 하시겠습니까?
- 14. Ruby On Rails에서 검색
- 15. jsp에서 편집 할 때 값을 검색 하시겠습니까?
- 16. JavaScript 파일 또는 REPL에서 CoffeeScript 파일을 require()해야합니다.
- 17. Ruby Eventmachine으로 파일을 작성하는 방법 (큰)
- 18. 내가처럼 원하는 파일을 검색 할 찾아보기 버튼을
- 19. jQuery가 파일을 검색 할 수 있습니까?
- 20. C에서 파일을 검색 할 때 오류를 무시하십시오.
- 21. Ruby on Rails 응용 프로그램에서 데이터베이스에 파일을 추가 하시겠습니까?
- 22. Ruby on Rails : 자바 파일을 압축하거나 압축 하시겠습니까?
- 23. Ruby 검색 트리 예제 혼동
- 24. Ruby에서 "require"보다는 "load"를 사용해야 할 때?
- 25. php require and autoload
- 26. aquamacs require-final-newline
- 27. "require"문에 의해로드 된 파일을 레일에서 언로드하는 방법
- 28. 레일 3 : 생성기 내에서`require`
- 29. ruby on rails 스코프 (검색)
- 30. ruby on rail에서 간단한 검색
감사합니다. 나는 내 자신의 구현을 만들 필요가 있다고 느꼈다. BTW, 이것은 1.8 : 1에서는 개별적으로 gem 경로를 $ :에 명시 적으로 포함하지 않기 때문에 루비 1.9에서만 작동하는 것으로 보입니다. –