2011-12-31 15 views
8

Estoy tratando de contribuir a un proyecto de código abierto y necesito un controlador para manejar un par de formas que necesitan ser presentado en.¿Cómo incluir un controlador con una gema Ruby on Rails?

creé estos controladores dentro de un directorio dentro de la gema llamada app/controllers/gemname/my_controller.rb.

Sin embargo, cuando intento acceder al controlador, parece que no está cargado (obtengo un error de nombre como si hubiera escrito algo así como NonExistentController).

¿Cómo cargo mi controlador con la gema?

Gracias!

+1

¿Está definido su 'MyController' dentro del módulo' Gemname'? Si no es rails, esperará que se coloque en 'app/controllers/my_controller.rb'. –

+0

Lea esta guía http://guides.rubyonrails.org/plugins.html – taro

+0

KL-7, ¿cómo defino MyController dentro del módulo Gemname? taro, gracias por la información. Lo hice, eso no contiene la información que estoy buscando. –

Respuesta

10

Supongamos que su gema se llama MyGem y tiene un controlador llamado SuperController que desea utilizar en la aplicación. El controlador debe ser definida como:

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

y en el directorio de joya que debe vivir en app/controllers/my_gem/super_controller.rb (no bajo la carpeta lib). Consulte source for Devise ya que hacen lo mismo.

[Editar] Puede aprender algo del A Guide To Starting Your Own Rails Engine Gem con respecto a su proyecto actual.

+0

¡Muchas gracias! –

+0

¡Muchas gracias! Me encanta el "enlace de guía" que mencionaste. –

+0

Estaba luchando con todo esto ayer. Creo que hoy será mucho más fácil. ¡Gracias! – Rimian

0

La guía en la respuesta de Brandon es muy útil, pero solo se aplica a los rieles 3.0. Desde 3.1 puedes crear un plugin. De esta manera: rails plugin new my_engine --mountable

Consulte esta guía útil:
http://namick.tumblr.com/post/17663752365/how-to-create-a-gemified-plugin-with-rails-3-2-rspec
(> Rails 3.0)

rieles guía oficial (borde):
http://edgeguides.rubyonrails.org/engines.html
http://edgeguides.rubyonrails.org/plugins.html

Antiguo enginex:
https://github.com/josevalim/enginex
(solo 3.0)

Cuestiones relacionadas