module Userlist::Rails::Helpers

Public Instance Methods

userlist_script_tag(*args) click to toggle source
# File lib/userlist/rails/helpers.rb, line 4
def userlist_script_tag(*args) # rubocop:disable Metrics/CyclomaticComplexity
  config = Userlist.config
  logger = Userlist.logger

  options = args.extract_options!

  user = args.first
  user ||= current_user if respond_to?(:current_user)
  user ||= Userlist::Rails.current_user

  options[:async] = true

  if user
    options[:data] ||= {}
    options[:data][:userlist] = Userlist::Token.generate(user, config)
  end

  script_tag = javascript_tag('window.userlist=window.userlist||function(){(userlist.q=userlist.q||[]).push(arguments)};')
  include_tag = javascript_include_tag(config.script_url, options)

  script_tag + include_tag
rescue Userlist::Error => e
  logger.error(e.message)
  raw("<!-- #{e.class}: #{e.message} -->") unless ::Rails.env.production?
end