diff --git a/lib/lepus/supervisor/config.rb b/lib/lepus/supervisor/config.rb index 286aa70..5261973 100644 --- a/lib/lepus/supervisor/config.rb +++ b/lib/lepus/supervisor/config.rb @@ -32,6 +32,7 @@ def consumers=(vals) def consumers @consumers ||= Dir[Lepus.config.consumers_directory.join("**/*.rb")].map { |path| Pathname.new(path) }.map do |path| next unless path.extname == ".rb" + next if File.readlines(path.to_s).grep(/abstract_class\s*=\s*true/).any? path.relative_path_from(Lepus.config.consumers_directory).to_s.sub(/\.rb$/, "").split("/").map do |part| part.split("_").collect(&:capitalize).join diff --git a/spec/lepus/supervisor/config_spec.rb b/spec/lepus/supervisor/config_spec.rb index 0d13e70..30ffb9b 100644 --- a/spec/lepus/supervisor/config_spec.rb +++ b/spec/lepus/supervisor/config_spec.rb @@ -37,9 +37,16 @@ allow(Dir).to receive(:[]).and_return([ "/tmp/lepus/consumers/ignore.js", "/tmp/lepus/consumers/exclude", + "/tmp/lepus/consumers/application_consumer.rb", "/tmp/lepus/consumers/foo_consumer.rb", "/tmp/lepus/consumers/namespaced/bar_consumer.rb" ]) + allow(File).to receive(:readlines).and_return([""]) + expect(File).to receive(:readlines).with("/tmp/lepus/consumers/application_consumer.rb").and_return([ + "class ApplicationConsumer < Lepus::Consumer", + " self.abstract_class = true", + "end" + ]) end it "returns the list of consumers" do