2014-09-15 3 views
0

J'ai créé un Gem (extension Devise). Dans cette gemme j'ai ajouté des routes servies par un contrôleur que j'ai placé sous le dossier app/controllers. Donc, ma structure de dossier ressemble:app/controllers dans ma gemme non ajouté à autoload_paths

app/ 
    |_ controllers/ 
       |_ my_pkg/my_controller.rb 
lib/ 
    |_my_gem.rb // somewhere in this file I added the routes. 

Cependant, je suis erreur lorsque je l'ai testé:

uninitialized constant MyPkg::MyController 

Ma meilleure estimation est que « app/contrôleurs » de mon petit bijou n'a pas été ajouté à Rails autoload_paths .

J'ai essayé plusieurs solutions et aucun d'entre eux fonctionne:

  • gemspec changé: spec.require_paths = [ "lib"] -> [spec.require_paths = "lib", "app/contrôleurs" ]

  • changé gemspec: supprimer ligne: spec.platform = Gem :: Platform :: RUBY # la suppression de cette ligne a provoqué l'apparition de "app/controllers" dans $ LOAD_PATH. Mais le problème n'a pas été résolu.

ont lutté avec elle pendant 12 heures maintenant droit .... :(Tous les conseils seront appréciés vraiment

Répondre

0

a trouvé la réponse: avoir des rails ajouter « app » et ses sous-dossiers à autoload_paths , vous devez définir un moteur et assurez-vous que votre classe de moteur est chargé:.

Rails 3 controller from plugin

0

L'erreur uninitialized constant MyPkg::MyController seulement que la fonction du module ne peut pas être la charge plutôt que le fichier ne charge pas

Voir si votre my_controller.rb défini comme:

module MyOkg 
    class MyController < xxx 
    .... 
    end 
end 

ou

class Mypkg::MyController < xxxx 
    ... 
end 
Questions connexes