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

Inherits:
Object
  • Object
show all
Defined in:
lib/sinatra/reloader.rb

Overview

Collection of file 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 Watcher of the elements defined in the file being watched and if its changes should be ignored.

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeList

Creates a new List instance.



110
111
112
113
114
# File 'lib/sinatra/reloader.rb', line 110

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

Class Method Details

.for(app) ⇒ Object

Returns the List for the application app.



105
106
107
# File 'lib/sinatra/reloader.rb', line 105

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

Instance Method Details

#ignore(path) ⇒ Object

Tells the Watcher for the file located at path to ignore the file changes, and adds the Watcher to the List, if it isn’t already there.



126
127
128
# File 'lib/sinatra/reloader.rb', line 126

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

#updatedObject

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



144
145
146
# File 'lib/sinatra/reloader.rb', line 144

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

#watch(path, element) ⇒ Object

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



119
120
121
# File 'lib/sinatra/reloader.rb', line 119

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

#watcher_for(path) ⇒ Object Also known as: watch_file

Adds a Watcher for the file located at path to the List, if it isn’t already there.



132
133
134
# File 'lib/sinatra/reloader.rb', line 132

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

#watchersObject

Returns an array with all the watchers in the List.



138
139
140
# File 'lib/sinatra/reloader.rb', line 138

def watchers
  @path_watcher_map.values
end