Witam, mam engine dla systemu odznaczeń. Oto część kodu, służy ona temu aby załadować dany observer tylko jeśli dane odznaczenie jest zdefiniowane w tabeli Badges.
module FfBadges
class Engine < ::Rails::Engine
initializer :add_badges_observers do |app|
observers += Dir.glob(app.root.to_s + "/extras/ff_badges/observers/*_observer.rb")
Dir.glob(observers).each do |path|
file = File.basename(path)
badge_filename = file.split('_observer.rb').first
if User.badge_activated?(badge_filename) && Badge.badge_configured?(badge_filename)
require_dependency(path)
ActiveRecord::Base.observers += ["FfBadges::Observers::#{badge_filename.camelcase}Observer"]
end
end
end
Problemem jest ta część kodu:
Badge.badge_configured?(badge_filename)
O ile na serwerze działa ok, to w testach zwraca to zawsze false mimo że tworze wcześniej odpowiedni object Badge. Podejrzewam że chodzi o to że cześć ta jest wykonywana wcześniej. Czy można jakoś w teście jeszcze raz załadować engine ?