2014-12-12 10 views
0

저는 일반적인 문자열 조작을 수행하는 보석 작업을하고 있는데, 4 + 앱을 도우미 메소드로 드러내고 싶습니다.옵션 Rails보기 도우미를 내 보석에 추가하는 방법은 무엇입니까?

내 보석의 모든 소비자가 레일스 앱이 아니므로 헬퍼 메소드를 레일 앱에 안전하게 표시하고 싶습니다.

두 질문 :

  1. 어떻게 보석에서 레일에보기 도우미 메서드를 추가하고 어디는 보석 디렉토리 구조 내에서 살아야합니까?
  2. 소비자가 레일 앱이 아닐 때이를 막기 위해 무엇을 할 수 있습니까? 이

감사

당신의 lib/my_gem.rb에서

답변

3

을 포함 때 즉, 보석 레일을 찾을 수 없습니다, 일반적으로이 라인을 따라 뭔가를하고 싶은 다음과 같은 경우

require 'my_gem/action_methods' if defined? ActionView 

그리고 lib/my_gem/action_view_methods.rb이 모두 포함됩니다 당신의 Rails/ActionView가 필요한 메소드.

당신과 함께 레일이 헬퍼를 추가 할 수 있습니다

module ActionMethods 
    # ... 
end 

ActionView::Base.send :include, ActionMethods 

는 또한 this questionthis one를 참조하십시오.

0

레일의 방법은 engine를 만드는 것입니다 그리고 그것은 당신의 보석에로드되는으로는 레일

module MyGem 
    class Engine < ::Rails::Engine 
    isolate_namespace MyGem 

    initializer "my_gem.include_view_helpers" do |app| 
     ActiveSupport.on_load :action_view do 
     include MyViewHelper 
     end 
    end 
    end 
end 

또 다른 당신이 갈 수있는 방법은 소비자가 '돈 있도록 기본적으로 도우미를 포함하지 않는 것입니다에 의해 처리됩니다 보석에서 예기치 않은 부작용을 얻지 않습니다. 도우미를 모듈로 만들고이를 ApplicationController 또는 필요한 컨트롤러에 추가해야 함을 문서화하십시오.