Jestem w trakcie pisania Rails Engine, a jako część tego mam skrypt generujący kopie niektórych plików migracyjnych.
Generator znajduje się tutaj
lib/generators/install/install_generator.rb
Generator wygląda tak
module Calligraph
class InstallGenerator < Rails::Generators::NamedBase
...
...
end
end
W aplikacji hosta, jeśli robię rails g
Widzę to wraz z innymi generatorami.
Calligraph:
calligraph:install
Jeśli uderzę
rails g calligraph:install
wraca z
Could not find generator calligraph:install.
Masz pojęcie o tym, co "brakuje" / "źle"?
Odpowiedzi:
2 dla odpowiedzi № 1Spróbuj przenieść generator do
lib/generators/calligraph/install/install_generator.rb
.
Ponieważ twój generator jest zdefiniowany w ramachmoduł, Rails oczekuje, że będzie on zawarty w podkatalogu o tej samej nazwie, podobnie jak kontrolery z nazwami lub inne rozszerzenia Railsowe, które znajdują się w modułach.
Alternatywnie, czasami dostajesz "nie może"znajdź generator ", jeśli masz problem z składnią w generatorze, ale konsola wyplułaby również ślad i szczegóły tego błędu, gdyby tak było.
Aby generator działał poprawnie, musisz również wymagać rails/generators
gdzieś w twoim silniku. Zwykle robię to na górze pliku generatora, ale od tego czasu rails g
odbiera generator, wydaje się, że gdzieś się nim zajmujesz.