Module: SidekiqUniqueJobs::Web::Helpers

Extended by:
Helpers
Included in:
Helpers
Defined in:
lib/sidekiq_unique_jobs/web/helpers.rb

Overview

Provides view helpers for the Sidekiq::Web extension

Author:

Constant Summary collapse

VIEW_PATH =

Returns the path to gem specific views.

Returns:

  • (String)

    the path to gem specific views

File.expand_path("../web/views", __dir__).freeze
SAFE_CPARAMS =

Returns safe params.

Returns:

  • (Array<String>)

    safe params

%w[
  filter count cursor prev_cursor poll direction
].freeze

Instance Method Summary collapse

Instance Method Details

#changelogSidekiqUniqueJobs::Digests

The collection of changelog entries

Returns:



70
71
72
# File 'lib/sidekiq_unique_jobs/web/helpers.rb', line 70

def changelog
  @changelog ||= SidekiqUniqueJobs::Changelog.new
end

#cparams(options) ⇒ String

Creates url safe parameters

Parameters:

  • options (Hash)

    the key/value to parameterize

Returns:

  • (String)

    a url safe parameter string



81
82
83
84
85
86
87
88
# File 'lib/sidekiq_unique_jobs/web/helpers.rb', line 81

def cparams(options)
  stringified_options = options.transform_keys(&:to_s)
  params.merge(stringified_options).filter_map do |key, value|
    next unless SAFE_CPARAMS.include?(key)

    "#{key}=#{CGI.escape(value.to_s)}"
  end.join("&")
end

#digestsSidekiqUniqueJobs::Digests

The collection of digests

Returns:



50
51
52
# File 'lib/sidekiq_unique_jobs/web/helpers.rb', line 50

def digests
  @digests ||= SidekiqUniqueJobs::Digests.new
end

#display_lock_args(args, truncate_after_chars = 2000) ⇒ String

Used to avoid incompatibility with older sidekiq versions

Parameters:

  • args (Array)

    the unique arguments to display

  • truncate_after_chars (Integer) (defaults to: 2000)

Returns:

  • (String)

    a string containing all non-truncated arguments



99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/sidekiq_unique_jobs/web/helpers.rb', line 99

def display_lock_args(args, truncate_after_chars = 2000)
  return "Invalid job payload, args is nil" if args.nil?
  return "Invalid job payload, args must be an Array, not #{args.class.name}" unless args.is_a?(Array)

  begin
    args.map do |arg|
      h(truncate(to_display(arg), truncate_after_chars))
    end.join(", ")
  rescue StandardError
    "Illegal job arguments: #{h args.inspect}"
  end
end

#expiring_digestsSidekiqUniqueJobs::ExpiringDigests

The collection of digests

Returns:



60
61
62
# File 'lib/sidekiq_unique_jobs/web/helpers.rb', line 60

def expiring_digests
  @expiring_digests ||= SidekiqUniqueJobs::ExpiringDigests.new
end

#parse_time(time) ⇒ Time

Constructs a time from a number of different types

Parameters:

  • time (Float, Integer, String, Time)

    a representation of a timestamp

Returns:

  • (Time)


163
164
165
166
167
168
169
170
171
172
# File 'lib/sidekiq_unique_jobs/web/helpers.rb', line 163

def parse_time(time)
  case time
  when Time
    time
  when Integer, Float
    Time.at(time)
  else
    Time.parse(time.to_s)
  end
end

#redirect_to(subpath) ⇒ Object

Redirect to with falback

Parameters:

  • subpath (String)

    the path to redirect to

Returns:

  • a redirect to the new subpath



119
120
121
122
123
124
125
126
127
# File 'lib/sidekiq_unique_jobs/web/helpers.rb', line 119

def redirect_to(subpath)
  if respond_to?(:to)
    # Sinatra-based web UI
    redirect to(subpath)
  else
    # Non-Sinatra based web UI (Sidekiq 4.2+)
    redirect "#{root_path}#{subpath}"
  end
end

#relative_time(time) ⇒ String

Gets a relative time as html

Parameters:

  • time (Time)

    an instance of Time

Returns:

  • (String)

    a html safe string with relative time information



136
137
138
139
# File 'lib/sidekiq_unique_jobs/web/helpers.rb', line 136

def relative_time(time)
  stamp = time.getutc.iso8601
  %(<time class="ltr" dir="ltr" title="#{stamp}" datetime="#{stamp}">#{time}</time>)
end

#safe_relative_time(time) ⇒ String

Gets a relative time as html without crashing

Parameters:

  • time (Float, Integer, String, Time)

    a representation of a timestamp

Returns:

  • (String)

    a html safe string with relative time information



148
149
150
151
152
153
154
# File 'lib/sidekiq_unique_jobs/web/helpers.rb', line 148

def safe_relative_time(time)
  return unless time

  time = parse_time(time)

  relative_time(time)
end

#unique_filename(name) ⇒ String

Construct template file name

Parameters:

  • name (Symbol)

    the name of the template

Returns:

  • (String)

    the full name of the file



40
41
42
# File 'lib/sidekiq_unique_jobs/web/helpers.rb', line 40

def unique_filename(name)
  File.join(VIEW_PATH, "#{name}.erb")
end

#unique_template(name) ⇒ String

Opens a template file contained within this gem

Parameters:

  • name (Symbol)

    the name of the template

Returns:

  • (String)

    the file contents of the template



29
30
31
# File 'lib/sidekiq_unique_jobs/web/helpers.rb', line 29

def unique_template(name)
  File.read(unique_filename(name))
end