[ruby-on-rails-3] Ruby on Rails 3를 사용하여 모듈을 만들고 사용하는 방법은 무엇입니까?

Ruby on Rails 3을 사용하고 있으며 모듈에서 일부 사용자 지정 및 공유 코드를 이동하고 싶습니다.

  1. 모듈 코드를 작성하려면 어떤 구문을 사용해야합니까?
  2. 내 응용 프로그램의 어느 폴더에 모듈 파일을 배치해야합니까?
  3. 하나 이상의 컨트롤러 클래스에 해당 모듈을 어떻게 포함시켜야합니까?
  4. 애플리케이션의 어느 곳에서나 사용자 정의 모듈을 사용해야하는 다른 조치 (있는 경우)는 무엇입니까?
  5. 내 애플리케이션에서 모듈의 메서드를 어떻게 호출 할 수 있습니까?

미리 감사드립니다.



답변

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

클래스에서 모듈을 사용하고 있으며 모든 모듈의 메서드에 액세스 할 수 있습니다.

또한 앱을 통해 모듈을 사용해야하는 경우 애플리케이션 컨트롤러에 포함 할 수 있습니다.


답변