class Locomotive::Steam::Middlewares::ThreadSafe

Attributes

env[RW]

Public Instance Methods

call(env) click to toggle source
# File lib/locomotive/steam/middlewares/thread_safe.rb, line 8
def call(env)
  threadsafed = dup
  threadsafed.env = env

  threadsafed._call # thread-safe purpose

  threadsafed.next
end
decorate_entry(entry) click to toggle source
# File lib/locomotive/steam/middlewares/thread_safe.rb, line 86
def decorate_entry(entry)
  return nil if entry.nil?
  Locomotive::Steam::Decorators::I18nDecorator.new(entry, locale, default_locale)
end
default_liquid_context() click to toggle source
# File lib/locomotive/steam/middlewares/thread_safe.rb, line 91
def default_liquid_context
  ::Liquid::Context.new({ 'site' => site.to_liquid }, {}, {
    request:        request,
    locale:         locale,
    site:           site,
    services:       services,
    repositories:   services.repositories
  }, true)
end
default_locale() click to toggle source
# File lib/locomotive/steam/middlewares/thread_safe.rb, line 56
def default_locale
  site.default_locale
end
liquid_assigns() click to toggle source
# File lib/locomotive/steam/middlewares/thread_safe.rb, line 78
def liquid_assigns
  @liquid_assigns ||= env.fetch('steam.liquid_assigns')
end
live_editing?() click to toggle source
# File lib/locomotive/steam/middlewares/thread_safe.rb, line 82
def live_editing?
  !!env['steam.live_editing']
end
locale() click to toggle source
# File lib/locomotive/steam/middlewares/thread_safe.rb, line 48
def locale
  @locale ||= env.fetch('steam.locale')
end
locales() click to toggle source
# File lib/locomotive/steam/middlewares/thread_safe.rb, line 52
def locales
  site.locales
end
merge_with_params(values) click to toggle source
# File lib/locomotive/steam/middlewares/thread_safe.rb, line 69
def merge_with_params(values)
  values.each { |name, value| self.request.params[name] = value }
  @params = nil
end
next() click to toggle source
# File lib/locomotive/steam/middlewares/thread_safe.rb, line 17
def next
  # avoid to be called twice
  @next_response || (@next_response = app.call(env))
end
page() click to toggle source
# File lib/locomotive/steam/middlewares/thread_safe.rb, line 40
def page
  @page ||= env.fetch('steam.page')
end
params() click to toggle source
# File lib/locomotive/steam/middlewares/thread_safe.rb, line 60
def params
  @params ||= if request.content_type&.start_with?('application/json') && (request.post? || request.put?)
    request.body.rewind
    JSON.parse(request.body.read).with_indifferent_access
  else
    request.params.with_indifferent_access
  end
end
path() click to toggle source
# File lib/locomotive/steam/middlewares/thread_safe.rb, line 44
def path
  @path ||= env.fetch('steam.path')
end
repositories() click to toggle source
# File lib/locomotive/steam/middlewares/thread_safe.rb, line 28
def repositories
  @repositories ||= services.repositories
end
request() click to toggle source
# File lib/locomotive/steam/middlewares/thread_safe.rb, line 32
def request
  @request ||= env.fetch('steam.request')
end
services() click to toggle source

Shortcuts =

# File lib/locomotive/steam/middlewares/thread_safe.rb, line 24
def services
  @services ||= env.fetch('steam.services')
end
session() click to toggle source
# File lib/locomotive/steam/middlewares/thread_safe.rb, line 74
def session
  env['rack.session']
end
site() click to toggle source
# File lib/locomotive/steam/middlewares/thread_safe.rb, line 36
def site
  @site ||= env.fetch('steam.site')
end