# File lib/nanoc/base/source_data/site.rb, line 236
    def load
      return if @loaded || @loading
      @loading = true

      # Load all data
      load_code_snippets
      data_sources.each { |ds| ds.use }
      load_items
      load_layouts
      data_sources.each { |ds| ds.unuse }
      setup_child_parent_links

      # Load compiler too
      # FIXME this should not be necessary
      compiler.load

      @loaded = true
    rescue => e
      unload
      raise e
    ensure
      @loading = false
    end