2011-12-15 3 views
0

기본적으로 rails 앱은보기에 대한 모든 도우미 메서드를 공유합니다. 모든 도우미 메서드는 모든보기간에 자동으로 공유되며 이로 인해 응용 프로그램이 커지면 명명 충돌이나 혼동이 발생할 수 있습니다. 전체 앱에 대해 공유되는 것으로 간주되는 몇 가지 방법이 있습니다. 공유하는 방법과 그 "글로벌"방법을 어디에 두어야합니까?전체 앱에 대해 공유되는 것으로 간주되는 메소드는 어디에 두어야하나요?

감사합니다.

답변

2

레일즈가 객체 지향 언어 인 Ruby를 기반으로한다는 사실 때문에 일반적으로 "글로벌"메소드가 필요 없다고 생각합니다. Rails는 객체 지향 패턴 인 MVC를 강하게 구현하고 있습니다.

하지만 전역 적으로 액세스 할 수있는 코드를 배치해야하는 경우 모든 클래스를 확장하여 허용하는 Ruby를 자유롭게 사용할 수 있습니다.

class Object 
    def my_global_method 
    ... 
    end 
end 

를 사용하여이 사용할 수 있도록 사방 경우는로드. "Rails Guide on Configuration" 읽기 자연스러운 장소는 추가 한 파일을 config/application.rb에 요구하는 것입니다. 또 다른 옵션은 파일을 디렉토리 config/initializers에 놓을 수 있기 때문에 Rails가 초기화 된 후 자동으로로드됩니다.

+0

현재 "전역"메소드는 sessions_helper.rb에 저장하고 application_controller.rb에는 SessionsHelper를 포함합니다. 우리는 myapp의 어디서나 메소드를 사용할 수 있습니다. config/application.rb에 메소드를 추가하는 경우. 코드가 myapp 모듈 내에서 추가 되었습니까? Class Application << Rails :: Application? – user938363

+0

글로벌은 전역을 의미합니다. 각 개체는 액세스 권한이 있습니다. 접근 방식으로 모든 뷰와 컨트롤러는 액세스 할 수 있지만 모델 객체는 없습니다. 그리고 아니요, 어떤 모듈에도 없습니다. – mliebelt

관련 문제