The notifier handles sending messages to different notifiers. Currently the following libraries are supported:
Ruby GNTP
rb-notifu
Please see the documentation of each notifier for more information about the requirements and configuration possibilities.
Guard knows four different notification types:
success
pending
failed
notify
The notification type selection is based on the image option that is sent to {notify}. Each image type has its own notification type, and notifications with custom images goes all sent as type `notify`. The `gntp` and `growl_notify` notifiers are able to register these types at Growl and allows customization of each notification type.
Guard can be configured to make use of more than one notifier at once, @see Guard::Dsl
List of available notifiers.
Add a notification library to be used.
@param [Symbol] name the name of the notifier to use @param [Boolean] silent disable any error message @param [Hash] options the notifier options @return [Boolean] if the notification could be added
# File lib/guard/notifier.rb, line 114 def add_notification(name, options = { }, silent = false) return turn_off if name == :off if NOTIFIERS.has_key?(name) && NOTIFIERS[name].available?(silent) self.notifications = notifications << { :name => name, :options => options } true else false end end
Clear available notifications.
# File lib/guard/notifier.rb, line 71 def clear_notifications ENV['GUARD_NOTIFICATIONS'] = nil end
Test if the notifications are on.
@return [Boolean] whether the notifications are on
# File lib/guard/notifier.rb, line 103 def enabled? ENV['GUARD_NOTIFY'] == 'true' end
Get the available notifications.
@return [Hash] the notifications
# File lib/guard/notifier.rb, line 57 def notifications ENV['GUARD_NOTIFICATIONS'] ? YAML::load(ENV['GUARD_NOTIFICATIONS']) : [] end
Set the available notifications.
@param [Array<Hash>] notifications the notifications
# File lib/guard/notifier.rb, line 65 def notifications=(notifications) ENV['GUARD_NOTIFICATIONS'] = YAML::dump(notifications) end
Show a system notification with all configured notifiers.
@param [String] message the message to show @option options [Symbol, String] image the image symbol or path to an image @option options [String] title the notification title
# File lib/guard/notifier.rb, line 131 def notify(message, options = { }) if enabled? type = notification_type(options[:image] || :success) image = image_path(options.delete(:image) || :success) title = options.delete(:title) || 'Guard' notifications.each do |notification| begin NOTIFIERS[notification[:name]].notify(type, title, message, image, options.merge(notification[:options])) rescue Exception => e ::Guard::UI.error "Error sending notification with #{ notification[:name] }: #{ e.message }" end end end end
Turn notifications off.
# File lib/guard/notifier.rb, line 95 def turn_off ENV['GUARD_NOTIFY'] = 'false' end
Turn notifications on. If no notifications are defined in the `Guardfile` Guard auto detects the first available library.
# File lib/guard/notifier.rb, line 79 def turn_on auto_detect_notification if notifications.empty? && (!::Guard.options || ::Guard.options[:notify]) if notifications.empty? ENV['GUARD_NOTIFY'] = 'false' else notifications.each do |notification| ::Guard::UI.info "Guard uses #{ NOTIFIERS[notification[:name]].to_s.split('::').last } to send notifications." end ENV['GUARD_NOTIFY'] = 'true' end end
Generated with the Darkfish Rdoc Generator 2.