lib/rdf/vocab/extensions.rb in rdf-vocab-3.1.1 vs lib/rdf/vocab/extensions.rb in rdf-vocab-3.1.2
- old
+ new
@@ -14,19 +14,18 @@
# @yield [klass]
# @yieldparam [Class] klass
# @return [Enumerator]
alias_method :_orig_each, :each
def each(&block)
- # This is needed since all vocabulary classes are defined using
- # Ruby's autoloading facility, meaning that `@@subclasses` will be
- # empty until each subclass has been touched or require'd.
- RDF::Vocab::VOCABS.each do |n, params|
- begin
- require "rdf/vocab/#{n}"
- rescue LoadError
- # Transient error
- warn "Failed to load #{n}"
- end
+ if self.equal?(Vocabulary)
+ # This is needed since all vocabulary classes are defined using
+ # Ruby's autoloading facility, meaning that `@@subclasses` will be
+ # empty until each subclass has been touched or require'd.
+ RDF::Vocab::VOCABS.each do |n, params|
+ clsname = params.fetch(:class_name, n.to_s.upcase).to_sym
+ RDF::Vocab.const_get(clsname) # Forces class to load
+ end unless @classes_loaded
+ @classes_loaded = true
end
_orig_each(&block)
end
begin