123456789_123456789_123456789_123456789_123456789_

Class: Sinatra::Reloader::Watcher::List

Relationships & Source Files
Inherits: Object
Defined in: sinatra-contrib/lib/sinatra/reloader.rb

Overview

Collection of file ::Sinatra::Reloader::Watcher that can be associated with a ::Sinatra application. That way, we can know which files belong to a given application and which files have been modified. It also provides a mechanism to inform a ::Sinatra::Reloader::Watcher of the elements defined in the file being watched and if its changes should be ignored.

Class Method Summary

Instance Method Summary

Constructor Details

.newList

Creates a new List instance.

[ GitHub ]

  
# File 'sinatra-contrib/lib/sinatra/reloader.rb', line 133

def initialize
  @path_watcher_map = Hash.new do |hash, key|
    hash[key] = Watcher.new(key)
  end
end

Class Method Details

.for(app)

Returns the List for the application app.

[ GitHub ]

  
# File 'sinatra-contrib/lib/sinatra/reloader.rb', line 128

def self.for(app)
  @app_list_map[app]
end

Instance Method Details

#ignore(path)

Tells the ::Sinatra::Reloader::Watcher for the file located at Sinatra::Reloader::Watcher#path to ignore the file changes, and adds the ::Sinatra::Reloader::Watcher to the List, if it isn't already there.

[ GitHub ]

  
# File 'sinatra-contrib/lib/sinatra/reloader.rb', line 149

def ignore(path)
  watcher_for(path).ignore
end

#updated

Returns an array with all the watchers in the List that have been updated.

[ GitHub ]

  
# File 'sinatra-contrib/lib/sinatra/reloader.rb', line 167

def updated
  watchers.find_all(&:updated?)
end

#watch(path, element)

Lets the ::Sinatra::Reloader::Watcher for the file located at Sinatra::Reloader::Watcher#path know that the element is defined there, and adds the ::Sinatra::Reloader::Watcher to the List, if it isn't already there.

[ GitHub ]

  
# File 'sinatra-contrib/lib/sinatra/reloader.rb', line 142

def watch(path, element)
  watcher_for(path).elements << element
end

#watch_file(path)

Alias for #watcher_for.

[ GitHub ]

  
# File 'sinatra-contrib/lib/sinatra/reloader.rb', line 158

alias watch_file watcher_for

#watcher_for(path) Also known as: #watch_file

Adds a ::Sinatra::Reloader::Watcher for the file located at Sinatra::Reloader::Watcher#path to the List, if it isn't already there.

[ GitHub ]

  
# File 'sinatra-contrib/lib/sinatra/reloader.rb', line 155

def watcher_for(path)
  @path_watcher_map[File.expand_path(path)]
end

#watchers

Returns an array with all the watchers in the List.

[ GitHub ]

  
# File 'sinatra-contrib/lib/sinatra/reloader.rb', line 161

def watchers
  @path_watcher_map.values
end