2011-12-31 9 views
8

staram się przyczynić do projektu open source i muszę kontroler obsłużyć kilka formularzy, które muszą być złożone w.Jak dołączyć kontroler z klejnotem Ruby on Rails?

stworzyłem te kontrolery wewnątrz katalogu wewnątrz klejnotu zwanego app/controllers/gemname/my_controller.rb.

Jednak, gdy próbuję uzyskać dostęp do kontrolera, wydaje się, że nie jest on załadowany (otrzymuję błąd nazwy, tak jakbym wpisał coś takiego jak NonExistentController).

Jak załadować kontroler z klejnotem?

Dzięki!

+1

Czy Twój "MyController" jest zdefiniowany w module 'Gemname'? Jeśli to nie szyny, spodziewasz się, że zostanie umieszczony w 'app/controllers/my_controller.rb'. –

+0

Przeczytaj ten przewodnik http://guides.rubyonrails.org/plugins.html – taro

+0

KL-7, jak zdefiniować MyController w module Gemname? taro, dzięki za informację. Tak, to nie zawiera informacji, których szukam. –

Odpowiedz

10

Załóżmy, że Twój klejnot nazywa się MyGem i masz kontroler o nazwie SuperController, którego chcesz używać w aplikacji. Kontroler powinien być zdefiniowany jako:

module MyGem 
    class SuperController < ApplicationController 
    def whatever 
     ... 
    end 
    end 
end 

iw katalogu gem powinien żyć w app/controllers/my_gem/super_controller.rb (nie w folderze lib). Sprawdź source for Devise, ponieważ robią to samo.

[Edytuj] Możesz dowiedzieć się czegoś od A Guide To Starting Your Own Rails Engine Gem w odniesieniu do bieżącego projektu.

+0

Dziękuję bardzo! –

+0

Wielkie dzięki! Uwielbiam "link przewodnika", o którym wspomniałeś. –

+0

Walczyłem z tym wszystkim wczoraj. Myślę, że dzisiaj będzie o wiele łatwiej. Dzięki! – Rimian

0

Przewodnik w odpowiedzi Brandona jest bardzo pomocny, ale dotyczy tylko szyn 3.0. Od wersji 3.1 możesz stworzyć wtyczkę. Tak: rails plugin new my_engine --mountable

Zobacz ten pomocny przewodnik:
http://namick.tumblr.com/post/17663752365/how-to-create-a-gemified-plugin-with-rails-3-2-rspec
(> Rails 3.0)

Rails oficjalny przewodnik (Edge):
http://edgeguides.rubyonrails.org/engines.html
http://edgeguides.rubyonrails.org/plugins.html

Old enginex:
https://github.com/josevalim/enginex
(tylko wersja 3.0)