Object
Initializes the directories listener.
@param [String] directory the directories to listen to @param [Hash] options the listen options @option options [Regexp] ignore a pattern for ignoring paths @option options [Regexp] filter a pattern for filtering paths @option options [Float] latency the delay between checking for changes in seconds @option options [Boolean] relative_paths whether or not to use relative-paths in the callback @option options [Boolean] force_polling whether to force the polling adapter or not @option options [String, Boolean] polling_fallback_message to change polling fallback message or remove it @option options [Class] force_adapter force the use of this adapter class, skipping usual adapter selection
@yield [modified, added, removed] the changed files @yieldparam [Array<String>] modified the list of modified files @yieldparam [Array<String>] added the list of added files @yieldparam [Array<String>] removed the list of removed files
# File lib/listen/listener.rb, line 31 def initialize(*args, &block) options = args.last.is_a?(Hash) ? args.pop : {} directories = args.flatten initialize_directories_and_directories_records(directories) initialize_relative_paths_usage(options) @block = block ignore(*options.delete(:ignore)) filter(*options.delete(:filter)) @adapter_options = options end
Sets the callback that gets called on changes.
@example Assign a callback to be called on changes
callback = lambda { |modified, added, removed| ... } change &callback
@param [Proc] block the callback proc
@return [Listen::Listener] the listener
# File lib/listen/listener.rb, line 238 def change(&block) # modified, added, removed @block = block self end
Adds filtering patterns to the listener.
@param (see Listen::DirectoryRecord#filter)
@return [Listen::Listener] the listener
@see Listen::DirectoryRecord#filter
# File lib/listen/listener.rb, line 136 def filter(*regexps) directories_records.each { |r| r.filter(*regexps) } self end
Replaces filtering patterns in the listener.
@param (see Listen::DirectoryRecord#filter!)
@return [Listen::Listener] the listener
@see Listen::DirectoryRecord#filter!
# File lib/listen/listener.rb, line 149 def filter!(*regexps) directories_records.each { |r| r.filter!(*regexps) } self end
Sets whether to force the use of a particular adapter, rather than going through usual adapter selection process on start.
@example Force use of Linux polling
force_adapter Listen::Adapters::Linux
@param [Class] adapter class to use for file system event notification.
@return [Listen::Listener] the listener
# File lib/listen/listener.rb, line 194 def force_adapter(adapter_class) @adapter_options[:force_adapter] = adapter_class self end
Sets whether the use of the polling adapter should be forced or not.
@example Forcing the use of the polling adapter
force_polling true
@param [Boolean] value whether to force the polling adapter or not
@return [Listen::Listener] the listener
# File lib/listen/listener.rb, line 179 def force_polling(value) @adapter_options[:force_polling] = value self end
Adds ignoring patterns to the listener.
@param (see Listen::DirectoryRecord#ignore)
@return [Listen::Listener] the listener
@see Listen::DirectoryRecord#ignore
# File lib/listen/listener.rb, line 110 def ignore(*regexps) directories_records.each { |r| r.ignore(*regexps) } self end
Replaces ignoring patterns in the listener.
@param (see Listen::DirectoryRecord#ignore!)
@return [Listen::Listener] the listener
@see Listen::DirectoryRecord#ignore!
# File lib/listen/listener.rb, line 123 def ignore!(*regexps) directories_records.each { |r| r.ignore!(*regexps) } self end
Sets the latency for the adapter. This is a helper method to simplify changing the latency directly from the listener.
@example Wait 0.5 seconds each time before checking changes
latency 0.5
@param [Float] seconds the amount of delay, in seconds
@return [Listen::Listener] the listener
# File lib/listen/listener.rb, line 164 def latency(seconds) @adapter_options[:latency] = seconds self end
Runs the callback passing it the changes if there are any.
@param (see Listen::DirectoryRecord#fetch_changes)
@see Listen::DirectoryRecord#fetch_changes
# File lib/listen/listener.rb, line 249 def on_change(directories, options = {}) changes = fetch_records_changes(directories, options) unless changes.values.all? { |paths| paths.empty? } block.call(changes[:modified], changes[:added], changes[:removed]) end rescue => ex Kernel.warn "[Listen warning]: Change block raise an execption: #{$!}" Kernel.warn "Backtrace:\n\t#{ex.backtrace.join("\n\t")}" end
Pauses the listener.
@return [Listen::Listener] the listener
# File lib/listen/listener.rb, line 79 def pause adapter.pause self end
Returns whether the listener is paused or not.
@return [Boolean] adapter paused status
# File lib/listen/listener.rb, line 98 def paused? !!adapter && adapter.paused? end
Defines a custom polling fallback message or disable it.
@example Disabling the polling fallback message
polling_fallback_message false
@param [String, Boolean] value to change polling fallback message or remove it
@return [Listen::Listener] the listener
# File lib/listen/listener.rb, line 223 def polling_fallback_message(value) @adapter_options[:polling_fallback_message] = value self end
Sets whether the paths in the callback should be relative or absolute.
@example Enabling relative paths in the callback
relative_paths true
@param [Boolean] value whether to enable relative paths in the callback or not
@return [Listen::Listener] the listener
# File lib/listen/listener.rb, line 209 def relative_paths(value) @use_relative_paths = value self end
Starts the listener by initializing the adapter and building the directory record concurrently, then it starts the adapter to watch for changes. The current thread is not blocked after starting.
# File lib/listen/listener.rb, line 50 def start(deprecated_blocking = nil) Kernel.warn "[Listen warning]:\n#{BLOCKING_PARAMETER_DEPRECATION_MESSAGE}" unless deprecated_blocking.nil? setup adapter.start end
Starts the listener by initializing the adapter and building the directory record concurrently, then it starts the adapter to watch for changes. The current thread is blocked after starting.
@since 1.0.0
# File lib/listen/listener.rb, line 64 def start! setup adapter.start! end
Generated with the Darkfish Rdoc Generator 2.