J'ai un problème pour créer un plugin Rails, appelons-le Mplug. Le plugin n'est pratiquement qu'une tâche rake, mais avec une bibliothèque utilisée par la tâche rake.Rails plugin nécessite des problèmes
Le problème consiste à exiger des fichiers. Disons que c'est la tâche rake:
namespace :mplug do
task :create do
Mplug::Indexer.new
end
end
Ceci ne reconnaîtra pas la constante Mplug. Donc j'ai pensé que je devais l'exiger.
require 'mplug'
namespace :mplug do
task :create do
Mplug::Indexer.new
end
end
Mais alors j'obtiens ce message.
no such file to load -- mplug
Donc, ok. Essayons de donner le chemin au plugin alors.
require 'vendor/plugins/mplug/lib/mplug'
namespace :mplug do
task :create do
Mplug::Indexer.new
end
end
Cela fonctionne réellement. Cependant, sauf que je suppose que c'est une mauvaise façon de le faire, je dois maintenant exiger les fichiers dans mon plugin comme si j'étais dans la racine des rails. Par exemple:
module Mplug
end
require 'mplug/indexer'
doit maintenant être:
module Mplug
end
require 'vendor/plugins/mplug/lib/mplug/indexer'
que je ne veux pas faire bien sûr.
Existe-t-il une façon élégante de résoudre ce problème?
Merci!
... Eh bien Comment puis-ce que les déclarations contenues dans le besoin fournisseur/plugins/Mplug/lib/mplug.rb être? Je dois encore faire comme ceci dans ce fichier: require 'vendeur/plugins/mplug/lib/mplug/indexer' – rejeep
La plupart des plugins utilisent init.rb pour requérir des fichiers quand Rails démarre. Je vous suggère de consulter ce Guide Rails: http://guides.rubyonrails.org/plugins.html Il donne les meilleures pratiques pour structurer vos répertoires de plugins de rails, init.rb, nécessite, etc. – jkrall