Class: SourceMonitor::Scraping::ItemScraper::AdapterResolver
- Inherits:
-
Object
- Object
- SourceMonitor::Scraping::ItemScraper::AdapterResolver
- Defined in:
- lib/source_monitor/scraping/item_scraper/adapter_resolver.rb
Overview
Resolves scraper adapter classes based on configuration or engine namespace.
Constant Summary collapse
- VALID_NAME_PATTERN =
/\A[a-z0-9_]+\z/i.freeze
Instance Method Summary collapse
-
#initialize(name:, source:) ⇒ AdapterResolver
constructor
A new instance of AdapterResolver.
- #resolve! ⇒ Object
Constructor Details
#initialize(name:, source:) ⇒ AdapterResolver
Returns a new instance of AdapterResolver.
10 11 12 13 |
# File 'lib/source_monitor/scraping/item_scraper/adapter_resolver.rb', line 10 def initialize(name:, source:) @name = name.to_s @source = source end |
Instance Method Details
#resolve! ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/source_monitor/scraping/item_scraper/adapter_resolver.rb', line 15 def resolve! raise_unknown!("No scraper adapter configured for source") if name.blank? raise_unknown!("Invalid scraper adapter: #{name}") unless VALID_NAME_PATTERN.match?(name) configured = SourceMonitor.config.scrapers.adapter_for(name) return configured if configured constant = resolve_constant return constant if constant <= SourceMonitor::Scrapers::Base raise_unknown!("Unknown scraper adapter: #{name}") rescue NameError raise_unknown!("Unknown scraper adapter: #{name}") end |