Class: Listen::Listener
- Inherits:
-
Object
- Object
- Listen::Listener
- Defined in:
- lib/listen/listener.rb
Direct Known Subclasses
Constant Summary collapse
- DEFAULT_TO_RELATIVE_PATHS =
The default value for using relative paths in the callback.
false
Instance Attribute Summary collapse
-
#adapter ⇒ Object
readonly
Returns the value of attribute adapter.
-
#directory ⇒ Object
readonly
Returns the value of attribute directory.
-
#directory_record ⇒ Object
readonly
Returns the value of attribute directory_record.
Instance Method Summary collapse
-
#change(&block) ⇒ Listen::Listener
Sets the callback that gets called on changes.
-
#filter(*regexps) ⇒ Listen::Listener
Adds file filters to the listener.
-
#force_polling(value) ⇒ Listen::Listener
Defines whether the use of the polling adapter should be forced or not.
-
#ignore(*paths) ⇒ Listen::Listener
Adds ignored paths to the listener.
-
#initialize(directory, options = {}) {|modified, added, removed| ... } ⇒ Listener
constructor
Initializes the directory listener.
-
#latency(seconds) ⇒ Listen::Listener
Sets the latency for the adapter.
-
#on_change(directories, options = {}) ⇒ Object
Runs the callback passing it the changes if there are any.
-
#pause ⇒ Listen::Listener
Pauses the listener.
-
#paused? ⇒ Boolean
Returns whether the listener is paused or not.
-
#polling_fallback_message(value) ⇒ Listen::Listener
Defines a custom polling fallback message of disable it.
-
#start(blocking = true) ⇒ Object
Starts the listener by initializing the adapter and building the directory record concurrently, then it starts the adapter to watch for changes.
-
#stop ⇒ Object
Stops the listener.
-
#unpause ⇒ Listen::Listener
Unpauses the listener.
Constructor Details
#initialize(directory, options = {}) {|modified, added, removed| ... } ⇒ Listener
Initializes the directory listener.
24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/listen/listener.rb', line 24 def initialize(directory, = {}, &block) @block = block @directory = directory @directory_record = DirectoryRecord.new(directory) @use_relative_paths = DEFAULT_TO_RELATIVE_PATHS @use_relative_paths = .delete(:relative_paths) if [:relative_paths] @directory_record.ignore(*.delete(:ignore)) if [:ignore] @directory_record.filter(*.delete(:filter)) if [:filter] @adapter_options = end |
Instance Attribute Details
#adapter ⇒ Object (readonly)
Returns the value of attribute adapter.
3 4 5 |
# File 'lib/listen/listener.rb', line 3 def adapter @adapter end |
#directory ⇒ Object (readonly)
Returns the value of attribute directory.
3 4 5 |
# File 'lib/listen/listener.rb', line 3 def directory @directory end |
#directory_record ⇒ Object (readonly)
Returns the value of attribute directory_record.
3 4 5 |
# File 'lib/listen/listener.rb', line 3 def directory_record @directory_record end |
Instance Method Details
#change(&block) ⇒ Listen::Listener
Sets the callback that gets called on changes.
159 160 161 162 |
# File 'lib/listen/listener.rb', line 159 def change(&block) # modified, added, removed @block = block self end |
#filter(*regexps) ⇒ Listen::Listener
Adds file filters to the listener.
100 101 102 103 |
# File 'lib/listen/listener.rb', line 100 def filter(*regexps) @directory_record.filter(*regexps) self end |
#force_polling(value) ⇒ Listen::Listener
Defines whether the use of the polling adapter should be forced or not.
130 131 132 133 |
# File 'lib/listen/listener.rb', line 130 def force_polling(value) @adapter_options[:force_polling] = value self end |
#ignore(*paths) ⇒ Listen::Listener
Adds ignored paths to the listener.
89 90 91 92 |
# File 'lib/listen/listener.rb', line 89 def ignore(*paths) @directory_record.ignore(*paths) self end |
#latency(seconds) ⇒ Listen::Listener
Sets the latency for the adapter. This is a helper method to simplify changing the latency directly from the listener.
115 116 117 118 |
# File 'lib/listen/listener.rb', line 115 def latency(seconds) @adapter_options[:latency] = seconds self end |
#on_change(directories, options = {}) ⇒ Object
Runs the callback passing it the changes if there are any.
168 169 170 171 172 173 174 175 |
# File 'lib/listen/listener.rb', line 168 def on_change(directories, = {}) changes = @directory_record.fetch_changes(directories, .merge( :relative_paths => @use_relative_paths )) unless changes.values.all? { |paths| paths.empty? } @block.call(changes[:modified],changes[:added],changes[:removed]) end end |
#pause ⇒ Listen::Listener
Pauses the listener.
60 61 62 63 |
# File 'lib/listen/listener.rb', line 60 def pause @adapter.paused = true self end |
#paused? ⇒ Boolean
Returns whether the listener is paused or not.
79 80 81 |
# File 'lib/listen/listener.rb', line 79 def paused? !!@adapter && @adapter.paused == true end |
#polling_fallback_message(value) ⇒ Listen::Listener
Defines a custom polling fallback message of disable it.
144 145 146 147 |
# File 'lib/listen/listener.rb', line 144 def (value) @adapter_options[:polling_fallback_message] = value self end |
#start(blocking = true) ⇒ Object
Starts the listener by initializing the adapter and building the directory record concurrently, then it starts the adapter to watch for changes.
43 44 45 46 47 48 |
# File 'lib/listen/listener.rb', line 43 def start(blocking = true) t = Thread.new { @adapter = initialize_adapter } @directory_record.build t.join @adapter.start(blocking) end |
#stop ⇒ Object
Stops the listener.
52 53 54 |
# File 'lib/listen/listener.rb', line 52 def stop @adapter.stop end |
#unpause ⇒ Listen::Listener
Unpauses the listener.
69 70 71 72 73 |
# File 'lib/listen/listener.rb', line 69 def unpause @directory_record.build @adapter.paused = false self end |