Testuję aplikację internetową z ruby, rspec, kapibara i selenu i wpadłem na uninitialized constant ActiveAdminLoginPage
Wyjątek, którego nie potrafię rozwiązać.Dynamicznie utworzyć polecenie automatycznego ładowania z nazw plików w Ruby
W spec_helper.rb jestem wymagająca co następuje:
Dir[File.join(Dir.pwd, 'spec/page_objects/**/*.rb')].each { |f| require f }
mam 2 klas
spec/page_objects/products/active_admin_login_page.rb
module Products
class ActiveAdminLoginPage < ::ActiveAdminLoginPage
...
end
end
dziedziczy
spec/page_objects/active_admin_login_page.rb
niestety klasa sub jest załadowany przed rodzicem klasa.
Jak dynamicznie utworzyć polecenie autoload ze wszystkich nazw plików w katalogu? chciałbym zastąpić poleceniem:
Dir[File.join(Dir.pwd, 'spec/page_objects/**/*.rb')].each { |f| require f }
z poleceniem autoload.
Jakie zachowanie można oczekiwać od autoload? Że automatycznie załaduje plik na podstawie brakującej stałej? Najprawdopodobniej będziesz musiał napisać "opakowanie", ponieważ ta funkcjonalność nie jest wbudowana. Pytanie brzmi, jak możesz się spodziewać, że się zachowa. Typowo ładujemy wszystkie zależności przez 'require (_relative)' dla każdego pliku. Aby wykonać pracę automatycznie, potrzebna jest relatywnie ścisła konwencja nazewnictwa do obliczania plików do załadowania. – insider