Ruby on Rails 3을 사용하고 있으며 모듈에서 일부 사용자 지정 및 공유 코드를 이동하고 싶습니다.
- 모듈 코드를 작성하려면 어떤 구문을 사용해야합니까?
- 내 응용 프로그램의 어느 폴더에 모듈 파일을 배치해야합니까?
- 하나 이상의 컨트롤러 클래스에 해당 모듈을 어떻게 포함시켜야합니까?
- 애플리케이션의 어느 곳에서나 사용자 정의 모듈을 사용해야하는 다른 조치 (있는 경우)는 무엇입니까?
- 내 애플리케이션에서 모듈의 메서드를 어떻게 호출 할 수 있습니까?
미리 감사드립니다.
답변
1. 모듈은 다음과 같이 간단히 생성 / 열기합니다.
module MyModule
def first_module_method
end
end
2. lib
폴더. lib
폴더 에서 모듈을 구성 하려면 모듈 자체에 넣을 수 있습니다. 예를 들어, 하위 폴더를 원하면 super_modules
모듈은 다음과 같이 정의됩니다.
module SuperModules
module MyModule
def first_module_method
end
end
end
3./5까지. 클래스에 모듈을 포함 할 때 클래스 내에 정의 된 것처럼 모듈 메서드를 간단히 호출 할 수 있습니다.
class MyClass
include MyModule
def some_method
first_module_method #calls module method
end
end
4. 먼저, 모듈이 애플리케이션의 모든 클래스에 정말로 필요한지 확인하십시오. 그렇지 않은 경우에는 필요하지 않은 클래스를 부 풀리지 않도록 필요한 곳에만 포함하는 것이 합리적입니다. 모듈이 어디에나 있어야한다면 앱에서 클래스의 클래스 계층 구조를 살펴보세요. 모든 모델에서 모듈을 원하십니까? ActiveRecord :: Base를 열고 거기에 모듈을 추가 할 수 있습니다.
답변
A> 1. 다른 루비 클래스와 동일한 구문을 사용할 수 있습니다. 예를 들어, 입력으로받는 바퀴 수에 따라 차량을 분류하기 위해 classify_vehicle 메서드를 사용할 VehicleClassifer 모듈을 정의하고 있습니다.
module VehicleClassifer
def classify_vehicle(number_of_wheels)
VehicleType.where("number_of_wheels = ?", number_of_wheels)
end
end
A> 2. 모듈은 일반적으로 / lib 폴더에 저장됩니다.
질문 3,4,5는 거의 같은 답을 가지고 있습니다. 당신이 사용할 수있는
class SomeController < ApplicationController
include VehicleClassfier
def index
classify_vehicle(4)
end
end
클래스에서 모듈을 사용하고 있으며 모든 모듈의 메서드에 액세스 할 수 있습니다.
또한 앱을 통해 모듈을 사용해야하는 경우 애플리케이션 컨트롤러에 포함 할 수 있습니다.