배열의 기능을 확장하고 배열에 키가 있는지, 배열이 비어 있지 않은지, 클래스를 작성할지, 어떻게로드되는지 확인하는 메서드를 추가하고 싶습니다. ?레일 앱의 클래스 위치
답변
이 lib/
에 코드를 넣어이 config/application.rb
에 줄을 추가하여 레일에 의해 자동으로 적재되고 있는지 확인하는 것입니다 할 수있는 표준 방법 : 다음
config.autoload_paths += Dir["#{config.root}/lib/**/"]
을 코드에서, 당신이 어디에 있든 당신을 필요로 확인 그걸 써. 당신이 사방을 적용 할 경우 라인 config/initializers
의 초기화를 만듭니다
my_array.rb
당신이 파일이
lib
에있는 파일의 이름입니다
require 'my_array'
. 즉,도
참조 등, 귀하의 모델, 컨트롤러, 뷰에서 사용할 수 있도록합니다 Best way to load module/class from lib folder in Rails 3? 또한
, 루비 (뿐만 아니라 레일)의 디렉토리 구조를 자동 로딩 중 하나 개 함정 조심,이 답변에 설명 : Best way to load module/class from lib folder in Rails 3?
lib/
에 넣을 수 있으며 답변에 설명 된대로 자동로드되도록 할 수 있습니다. 또는 이니셜 라이저에 넣을 수 있습니다. 나는 이니셜 라이저 접근법을 조금 더 좋아한다. 왜냐하면 더 쉽기 때문이다 (당신은 자동 로딩을 얻는다).
보통 initializers
디렉토리의 하위 디렉토리 core_ext
을 만들고 여기에 핵심 클래스 확장을 넣습니다.
module MyFunctionForArray
def my_function(arg1, arg2)
# ...
end
end
Array.send :include, MyFunctionForArray
난 항상 다시하지하려고 : 당신이 경우에 내가 포함 된 파일 RAILS_ROOT/config/initializers/core_ext/array_my_function
을 만들 것이다, 그래서 나는 항상 확장되고있는 클래스와 I가 파일 이름에 추가에 대한 설명의 이름을 넣어 시도 클래스를 직접 확장하고 내 확장을 모듈에 넣고이 모듈을 클래스에 포함하여 확장합니다.
- 1. iPhone 앱의 위치 문제
- 2. 위치 기반 앱의 EXC_BAD_ACCESS
- 3. 레일 앱의 "탭 순서"
- 4. 레일 앱의 모바일보기 테스트
- 5. 레일 앱의 순위 알고리즘
- 6. 레일 앱의 캘린더
- 7. iphone 앱의 Google지도 : 현재 위치
- 8. 부분에서 레일 앱의 주요 '수익률'호출
- 9. authlogic 레일 앱의 무한 루프
- 10. 레일 3 앱의 Google 캘린더
- 11. OUTSIDE 레일 앱의 액세스 모델
- 12. 레일 파일 위치
- 13. 범용 앱의 UISplitViewController 하위 클래스
- 14. 메트로 앱의 기본 CSS 클래스
- 15. 웹 앱의 클래스 경로 찾기
- 16. xcode 4.4에 설치된 앱의 위치 iOS 시뮬레이터
- 17. Android 앱의 GPS 위치 정보가 충돌합니다.
- 18. 레일 앱을 다른 레일 앱의 랙 앱으로 설정하려면 어떻게해야하나요?
- 19. C# - StateObject 클래스 - 위치
- 20. MVC 일반 클래스 위치
- 21. 레일 협회, 예를 들어 위치
- 22. 레일 시드 데이터 시드 위치
- 23. 레일 : before_create에서 위치 값 설정
- 24. 레일 앱의 모든 테스트 목록 인쇄
- 25. ec2에서 레일 앱의 트래픽을 모니터링하는 방법은 무엇입니까?
- 26. amazon 클라우드에서 heroku 앱의 자산을 저장하는 레일
- 27. 레일 앱의 가장 좋은 방법은 무엇입니까?
- 28. heroku에서 실행중인 프로덕션 앱의 이상한 동작을 레일
- 29. 내 레일 앱의 데이터베이스를 검색하는 도구는 무엇입니까?
- 30. 다형성 연결은 레일 앱의 성능에 영향을 줍니까?
이니셜 라이저에서도 사용하지만 클래스를 다시 사용했습니다. 클래스를 다시 열지 않고 모듈을 포함하는 접근 방식에 이점이 있습니까? – rubyprince
내 의견으로는 모든 확장을 포함하는 모듈을 포함 할 때 원래 클래스를 오염시키지 않아야합니다. 원래 클래스의 조상 체인에 하나의 새 요소를 추가하는 대신 클래스에 X 개의 새 메서드를 직접 추가하는 것이 좋습니다. 그리고 메소드가 정의 된 곳을 알아 내야 할 때 도움이됩니다 :'[1,2,3] .method (: my_function)'예를 들어 메소드 * my_function *은 클래스 자체가 아니라 모듈에서 온다고 알려줍니다 그러므로 쉽게 찾을 수 있습니다 ... – severin
ok .. 그게 말이 되네. 감사합니다. – rubyprince