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 =
File.expand_path("../web/views", __dir__).freeze
SAFE_CPARAMS =
%w[
  filter count cursor prev_cursor poll direction
].freeze

Instance Method Summary collapse

Instance Method Details

#changelogSidekiqUniqueJobs::Digests

The collection of changelog entries



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

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

#cparams(options) ⇒ String

Creates url safe parameters



71
72
73
74
75
76
77
78
# File 'lib/sidekiq_unique_jobs/web/helpers.rb', line 71

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

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

#digestsSidekiqUniqueJobs::Digests

The collection of digests



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



89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/sidekiq_unique_jobs/web/helpers.rb', line 89

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

#parse_time(time) ⇒ Time

Constructs a time from a number of different types



151
152
153
154
155
156
157
158
159
160
# File 'lib/sidekiq_unique_jobs/web/helpers.rb', line 151

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



109
110
111
112
113
114
115
116
117
# File 'lib/sidekiq_unique_jobs/web/helpers.rb', line 109

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



126
127
128
129
# File 'lib/sidekiq_unique_jobs/web/helpers.rb', line 126

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



138
139
140
141
142
# File 'lib/sidekiq_unique_jobs/web/helpers.rb', line 138

def safe_relative_time(time)
  time = parse_time(time)

  relative_time(time)
end

#unique_filename(name) ⇒ String

Construct template file name



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



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

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