2010-06-22 3 views
17

레일 3 (베타 4) 용 생성기로 보석을 만들려고합니다. 나는 these instructions을 따라 갔지만 나는 달릴 수 없었다. 문제는 내가 생성기 파일에서 모듈을 정의 할 때 생성기가 '레일즈 생성'과 함께 나열되지만 생성기를 찾을 수 없기 때문에 실행되지 않는다는 것입니다. 지침에서Ruby on Rails 3 생성기 (네임 스페이스 포함)가있는 보석

('설치 레일 my_gem'을 만들어 작동하지 않습니다) : 수정

module MyGem 
    class InstallGenerator < Rails::Generators::Base 
    source_root File.expand_path("../templates", __FILE__) 

    # all public methods in here will be run in order 
    def add_my_initializer 
     template "initializer.rb", "config/initializers/my_gem_initializer.rb" 
    end 
    end 
end 

을 (레일 설치 생성 '와 함께 작동) :

class InstallGenerator < Rails::Generators::Base 
    source_root File.expand_path("../templates", __FILE__) 

    # all public methods in here will be run in order 
    def add_my_initializer 
    template "initializer.rb", "config/initializers/my_gem_initializer.rb" 
    end 
end 

을하지만, 내가 원하는 생성기의 네임 스페이스를 가지는 것. company : gem_name : generator, 모듈 접근법을 사용해야한다. 내 추측으로는 조회 및 디렉토리 구조와 관련이 있지만 그 방법을 알 수는 없다. 나는 두 가지 방법을 시도했다 :

lib 
-generators 
--my_gem.rb 

lib 
-generators 
--company 
---my_gem.rb 

lib 
-generators 
--company 
---my_gem_name 
----my_gem.rb 

아무런 도움이되지 않았다. 나는 또한 인터넷에서 꽤 많은 것을 발견했다.

답변

4

rspec-rails gem에는 "rspec : install"이라는 생성기가 있지만 하나의 네임 스페이스이지만 시작일 수 있습니다. 그래서 GitHub의 https://github.com/rspec/rspec-rails

에 자신의 소스 트리를 확인하면 파일 구조처럼 보이는 것은 :

lib 
└ generators 
    ├ rspec.rb 
    └ rspec 
     └ install 
      └ install_generator.rb 

나는이 솔루션에 당신을 이끌 도움이되기를 바랍니다! 우리가 당신 (

내가에 대한 네임 스페이스 생성기를 구현 (I이 게시물은 거의 세입니다 실현, 그러나 희망이 적어도 검색에서 여기 오는 사람들에게 도움이 될 것입니다.)

+0

이것은 완벽하게 작동합니다! David Sulc의 답과 같이 다른'rails' 폴더에 중첩 할 필요가 없습니다. –

0

디렉토리를 당신의 네임 스페이스 발전기해야한다 : lib 디렉토리/발전기/my_gem

귀하의 보석 이름이 'my-gem'또는 'my_gem'이라고 가정합니다. 이것은 영숫자가 아닌 다른 문자에도 적용될 수 있습니다. 하이픈이 있으면 밑줄로 바뀝니다.

약 4 시간이 걸렸습니다.