disk.haml
evaluate_source
./views/disk.haml
in
evaluate_source
%ul.discs_nav
%li
- @disks.each do |d|
= link_to image_tag(d.cover.url, :width=>78), page_url(@page_and_parents)+'/disk:'+d.slug
%div.song_container
%p.big_image
- unless @disk.cover.blank?
= image_tag @disk.cover.url,:width=>192
.content
%span.title= @disk.title
%span.date
= "#{@disk.label}#{(l @disk.date, ", %B %Y").titlecase}"
.artists
/var/lib/gems/1.8/gems/tilt-1.2.2/lib/tilt.rb
in
cached_evaluate
# Redefine itself to use method compilation the next time:
def self.cached_evaluate(scope, locals, &block)
method = compiled_method(locals.keys)
method.bind(scope).call(locals, &block)
end
# Use instance_eval the first time:
evaluate_source(scope, locals, &block)
end
# Generates all template source by combining the preamble, template, and
# postamble and returns a two-tuple of the form: [source, offset], where
# source is the string containing (Ruby) source code for the template and
# offset is the integer line offset where line reporting should begin.
#
/var/lib/gems/1.8/gems/tilt-1.2.2/lib/tilt.rb
in
evaluate
compile!
else
raise NotImplementedError
end
end
def evaluate(scope, locals, &block)
cached_evaluate(scope, locals, &block)
end
# Process the template and return the result. The first time this
# method is called, the template source is evaluated with instance_eval.
# On the sequential method calls it will compile the template to an
# unbound method which will lead to better performance. In any case,
# template executation is guaranteed to be performed in the scope object
/var/lib/gems/1.8/gems/tilt-1.2.2/lib/tilt.rb
in
evaluate
def prepare
options = @options.merge(:filename => eval_file, :line => line)
@engine = ::Haml::Engine.new(data, options)
end
def evaluate(scope, locals, &block)
if @engine.respond_to?(:precompiled_method_return_value, true)
super
else
@engine.render(scope, locals, &block)
end
end
# Precompiled Haml source. Taken from the precompiled_with_ambles
# method in Haml::Precompiler:
/var/lib/gems/1.8/gems/tilt-1.2.2/lib/tilt.rb
in
render
prepare
end
# Render the template in the given scope with the locals specified. If a
# block is given, it is typically available within the template via
# +yield+.
def render(scope=Object.new, locals={}, &block)
evaluate scope, locals || {}, &block
end
# The basename of the template file.
def basename(suffix='')
File.basename(file, suffix) if file
end
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/base.rb
in
render
layout_engine = options.delete(:layout_engine) || engine
scope = options.delete(:scope) || self
# compile and render template
layout_was = @default_layout
@default_layout = false
template = compile_template(engine, data, options, views)
output = template.render(scope, locals, &block)
@default_layout = layout_was
# render layout
if layout
options = options.merge(:views => views, :layout => false, :eat_errors => eat_errors, :scope => scope)
catch(:layout_missing) { return render(layout_engine, layout, options, locals) { output } }
end
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/base.rb
in
haml
end
def erubis(template, options={}, locals={})
render :erubis, template, options, locals
end
def haml(template, options={}, locals={})
render :haml, template, options, locals
end
def sass(template, options={}, locals={})
options.merge! :layout => false, :default_content_type => :css
render :sass, template, options, locals
end
./front_end.rb
in
GET (?-mix:(?-mix:\/(\w{2})\/pages\/([-_a-zA-Z0-9:\/]+))\/disk:(?-mix:([-_a-zA-Z0-9|]+)))
# DISK
# /fr/pages/ma/page/cool/disk:mon-disk
get %r{#{match_page}/disk:#{match_slug}} do |lang, page_slug, disk_slug|
@page, @page_and_parents, @slugs = get_page(page_slug)
@disks = AudioSet.where(:set_type=>'disk').all
@disk = AudioSet.where(:slug => disk_slug,:set_type=>'disk').first
@route_suffix = 'media disk'
haml :disk
end
# CONCERT
# /fr/pages/ma/page/cool/concert:12
get %r{#{match_page}/concert:([0-9]+)} do |lang, page_slug, concert_id|
@page, @page_and_parents, @slugs = get_page(page_slug)
@concert = Event.find(concert_id)
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/base.rb
in
call
define_method(method_name, &block)
unbound_method = instance_method method_name
pattern, keys = compile(path)
conditions, @conditions = @conditions, []
remove_method method_name
[ block.arity != 0 ?
proc { unbound_method.bind(self).call(*@block_params) } :
proc { unbound_method.bind(self).call },
pattern, keys, conditions ]
end
def compile(path)
keys = []
if path.respond_to? :to_str
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/base.rb
in
compile!
define_method(method_name, &block)
unbound_method = instance_method method_name
pattern, keys = compile(path)
conditions, @conditions = @conditions, []
remove_method method_name
[ block.arity != 0 ?
proc { unbound_method.bind(self).call(*@block_params) } :
proc { unbound_method.bind(self).call },
pattern, keys, conditions ]
end
def compile(path)
keys = []
if path.respond_to? :to_str
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/base.rb
in
instance_eval
route_eval(&pass_block) if pass_block
route_missing
end
# Run a route block and throw :halt with the result.
def route_eval(&block)
throw :halt, instance_eval(&block)
end
# If the current request matches pattern and conditions, fill params
# with keys and call the given block.
# Revert params afterwards.
#
# Returns pass block.
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/base.rb
in
route_eval
route_eval(&pass_block) if pass_block
route_missing
end
# Run a route block and throw :halt with the result.
def route_eval(&block)
throw :halt, instance_eval(&block)
end
# If the current request matches pattern and conditions, fill params
# with keys and call the given block.
# Revert params afterwards.
#
# Returns pass block.
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/base.rb
in
route!
end
# Run routes defined on the class and all superclasses.
def route!(base=self.class, pass_block=nil)
if routes = base.routes[@request.request_method]
routes.each do |pattern, keys, conditions, block|
pass_block = process_route(pattern, keys, conditions) do
route_eval(&block)
end
end
end
# Run routes defined in superclass.
if base.superclass.respond_to?(:routes)
return route!(base.superclass, pass_block)
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/base.rb
in
process_route
{}
end
@params = @original_params.merge(params)
@block_params = values
catch(:pass) do
conditions.each { |cond|
throw :pass if instance_eval(&cond) == false }
yield
end
end
ensure
@params = @original_params
end
# No matching route was found or all routes passed. The default
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/base.rb
in
catch
elsif values.any?
{'captures' => values}
else
{}
end
@params = @original_params.merge(params)
@block_params = values
catch(:pass) do
conditions.each { |cond|
throw :pass if instance_eval(&cond) == false }
yield
end
end
ensure
@params = @original_params
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/base.rb
in
process_route
elsif values.any?
{'captures' => values}
else
{}
end
@params = @original_params.merge(params)
@block_params = values
catch(:pass) do
conditions.each { |cond|
throw :pass if instance_eval(&cond) == false }
yield
end
end
ensure
@params = @original_params
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/base.rb
in
route!
base.filters[type].each { |block| instance_eval(&block) }
end
# Run routes defined on the class and all superclasses.
def route!(base=self.class, pass_block=nil)
if routes = base.routes[@request.request_method]
routes.each do |pattern, keys, conditions, block|
pass_block = process_route(pattern, keys, conditions) do
route_eval(&block)
end
end
end
# Run routes defined in superclass.
if base.superclass.respond_to?(:routes)
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/base.rb
in
each
filter! type, base.superclass if base.superclass.respond_to?(:filters)
base.filters[type].each { |block| instance_eval(&block) }
end
# Run routes defined on the class and all superclasses.
def route!(base=self.class, pass_block=nil)
if routes = base.routes[@request.request_method]
routes.each do |pattern, keys, conditions, block|
pass_block = process_route(pattern, keys, conditions) do
route_eval(&block)
end
end
end
# Run routes defined in superclass.
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/base.rb
in
route!
filter! type, base.superclass if base.superclass.respond_to?(:filters)
base.filters[type].each { |block| instance_eval(&block) }
end
# Run routes defined on the class and all superclasses.
def route!(base=self.class, pass_block=nil)
if routes = base.routes[@request.request_method]
routes.each do |pattern, keys, conditions, block|
pass_block = process_route(pattern, keys, conditions) do
route_eval(&block)
end
end
end
# Run routes defined in superclass.
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/base.rb
in
dispatch!
res
end
# Dispatch a request with error handling.
def dispatch!
static! if settings.static? && (request.get? || request.head?)
filter! :before
route!
rescue NotFound => boom
handle_not_found!(boom)
rescue ::Exception => boom
handle_exception!(boom)
ensure
filter! :after unless env['sinatra.static_file']
end
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/base.rb
in
call!
@response = Response.new
@params = indifferent_params(@request.params)
template_cache.clear if settings.reload_templates
force_encoding(@request.route)
force_encoding(@params)
@response['Content-Type'] = nil
invoke { dispatch! }
invoke { error_block!(response.status) }
unless @response['Content-Type']
if body.respond_to?(:to_ary) and body.first.respond_to? :content_type
content_type body.first.content_type
else
content_type :html
end
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/base.rb
in
instance_eval
# Creates a Hash with indifferent access.
def indifferent_hash
Hash.new {|hash,key| hash[key.to_s] if Symbol === key }
end
# Run the block with 'throw :halt' support and apply result to the response.
def invoke(&block)
res = catch(:halt) { instance_eval(&block) }
return if res.nil?
case
when res.respond_to?(:to_str)
@response.body = [res]
when res.respond_to?(:to_ary)
res = res.to_ary
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/base.rb
in
invoke
# Creates a Hash with indifferent access.
def indifferent_hash
Hash.new {|hash,key| hash[key.to_s] if Symbol === key }
end
# Run the block with 'throw :halt' support and apply result to the response.
def invoke(&block)
res = catch(:halt) { instance_eval(&block) }
return if res.nil?
case
when res.respond_to?(:to_str)
@response.body = [res]
when res.respond_to?(:to_ary)
res = res.to_ary
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/base.rb
in
catch
# Creates a Hash with indifferent access.
def indifferent_hash
Hash.new {|hash,key| hash[key.to_s] if Symbol === key }
end
# Run the block with 'throw :halt' support and apply result to the response.
def invoke(&block)
res = catch(:halt) { instance_eval(&block) }
return if res.nil?
case
when res.respond_to?(:to_str)
@response.body = [res]
when res.respond_to?(:to_ary)
res = res.to_ary
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/base.rb
in
invoke
# Creates a Hash with indifferent access.
def indifferent_hash
Hash.new {|hash,key| hash[key.to_s] if Symbol === key }
end
# Run the block with 'throw :halt' support and apply result to the response.
def invoke(&block)
res = catch(:halt) { instance_eval(&block) }
return if res.nil?
case
when res.respond_to?(:to_str)
@response.body = [res]
when res.respond_to?(:to_ary)
res = res.to_ary
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/base.rb
in
call!
@response = Response.new
@params = indifferent_params(@request.params)
template_cache.clear if settings.reload_templates
force_encoding(@request.route)
force_encoding(@params)
@response['Content-Type'] = nil
invoke { dispatch! }
invoke { error_block!(response.status) }
unless @response['Content-Type']
if body.respond_to?(:to_ary) and body.first.respond_to? :content_type
content_type body.first.content_type
else
content_type :html
end
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/base.rb
in
call
@app = app
@template_cache = Tilt::Cache.new
yield self if block_given?
end
# Rack call interface.
def call(env)
dup.call!(env)
end
attr_accessor :env, :request, :response, :params
def call!(env) # :nodoc:
@env = env
@request = Request.new(env)
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/showexceptions.rb
in
call
def initialize(app)
@app = app
@template = ERB.new(TEMPLATE)
end
def call(env)
@app.call(env)
rescue Exception => e
errors, env["rack.errors"] = env["rack.errors"], @@eats_errors
if respond_to?(:prefers_plain_text?) and prefers_plain_text?(env)
content_type = "text/plain"
body = [dump_exception(e)]
else
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/base.rb
in
call
builder.use ShowExceptions if show_exceptions?
middleware.each { |c,a,b| builder.use(c, *a, &b) }
builder.run new!(*args, &bk)
builder
end
def call(env)
synchronize { prototype.call(env) }
end
private
def setup_sessions(builder)
return unless sessions?
builder.use Rack::Session::Cookie, :secret => session_secret
end
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/base.rb
in
synchronize
end
@@mutex = Mutex.new
def synchronize(&block)
if lock?
@@mutex.synchronize(&block)
else
yield
end
end
def metadef(message, &block)
(class << self; self; end).
send :define_method, message, &block
end
/var/lib/gems/1.8/gems/sinatra-1.2.1/lib/sinatra/base.rb
in
call
builder.use ShowExceptions if show_exceptions?
middleware.each { |c,a,b| builder.use(c, *a, &b) }
builder.run new!(*args, &bk)
builder
end
def call(env)
synchronize { prototype.call(env) }
end
private
def setup_sessions(builder)
return unless sessions?
builder.use Rack::Session::Cookie, :secret => session_secret
end
/var/lib/gems/1.8/gems/rack-1.2.2/lib/rack/urlmap.rb
in
call
hHost, sName, sPort = env.values_at('HTTP_HOST','SERVER_NAME','SERVER_PORT')
@mapping.each { |host, location, match, app|
next unless (hHost == host || sName == host \
|| (host.nil? && (hHost == sName || hHost == sName+':'+sPort)))
next unless path.to_s =~ match && rest = $1
next unless rest.empty? || rest[0] == ?/
env.merge!('SCRIPT_NAME' => (script_name + location), 'PATH_INFO' => rest)
return app.call(env)
}
[404, {"Content-Type" => "text/plain", "X-Cascade" => "pass"}, ["Not Found: #{path}"]]
ensure
env.merge! 'PATH_INFO' => path, 'SCRIPT_NAME' => script_name
end
end
end
/var/lib/gems/1.8/gems/rack-1.2.2/lib/rack/urlmap.rb
in
each
}.sort_by { |(h, l, m, a)| [h ? -h.size : (-1.0 / 0.0), -l.size] } # Longest path first
end
def call(env)
path = env["PATH_INFO"]
script_name = env['SCRIPT_NAME']
hHost, sName, sPort = env.values_at('HTTP_HOST','SERVER_NAME','SERVER_PORT')
@mapping.each { |host, location, match, app|
next unless (hHost == host || sName == host \
|| (host.nil? && (hHost == sName || hHost == sName+':'+sPort)))
next unless path.to_s =~ match && rest = $1
next unless rest.empty? || rest[0] == ?/
env.merge!('SCRIPT_NAME' => (script_name + location), 'PATH_INFO' => rest)
return app.call(env)
}
/var/lib/gems/1.8/gems/rack-1.2.2/lib/rack/urlmap.rb
in
call
}.sort_by { |(h, l, m, a)| [h ? -h.size : (-1.0 / 0.0), -l.size] } # Longest path first
end
def call(env)
path = env["PATH_INFO"]
script_name = env['SCRIPT_NAME']
hHost, sName, sPort = env.values_at('HTTP_HOST','SERVER_NAME','SERVER_PORT')
@mapping.each { |host, location, match, app|
next unless (hHost == host || sName == host \
|| (host.nil? && (hHost == sName || hHost == sName+':'+sPort)))
next unless path.to_s =~ match && rest = $1
next unless rest.empty? || rest[0] == ?/
env.merge!('SCRIPT_NAME' => (script_name + location), 'PATH_INFO' => rest)
return app.call(env)
}
/var/lib/gems/1.8/gems/thin-1.2.7/lib/thin/connection.rb
in
pre_process
# When we're under a non-async framework like rails, we can still spawn
# off async responses using the callback info, so there's little point
# in removing this.
response = AsyncResponse
catch(:async) do
# Process the request calling the Rack adapter
response = @app.call(@request.env)
end
response
rescue Exception
handle_error
terminate_request
nil # Signal to post_process that the request could not be processed
end
/var/lib/gems/1.8/gems/thin-1.2.7/lib/thin/connection.rb
in
catch
# callback is no longer referenced, so be tidy!
@request.async_callback = method(:post_process)
# When we're under a non-async framework like rails, we can still spawn
# off async responses using the callback info, so there's little point
# in removing this.
response = AsyncResponse
catch(:async) do
# Process the request calling the Rack adapter
response = @app.call(@request.env)
end
response
rescue Exception
handle_error
terminate_request
/var/lib/gems/1.8/gems/thin-1.2.7/lib/thin/connection.rb
in
pre_process
# callback is no longer referenced, so be tidy!
@request.async_callback = method(:post_process)
# When we're under a non-async framework like rails, we can still spawn
# off async responses using the callback info, so there's little point
# in removing this.
response = AsyncResponse
catch(:async) do
# Process the request calling the Rack adapter
response = @app.call(@request.env)
end
response
rescue Exception
handle_error
terminate_request
/var/lib/gems/1.8/gems/thin-1.2.7/lib/thin/connection.rb
in
process
# is ready to be processed.
def process
if threaded?
@request.threaded = true
EventMachine.defer(method(:pre_process), method(:post_process))
else
@request.threaded = false
post_process(pre_process)
end
end
def pre_process
# Add client info to the request env
@request.remote_address = remote_address
/var/lib/gems/1.8/gems/thin-1.2.7/lib/thin/connection.rb
in
receive_data
@request = Request.new
@response = Response.new
end
# Called when data is received from the client.
def receive_data(data)
trace { data }
process if @request.parse(data)
rescue InvalidRequest => e
log "!! Invalid request"
log_error e
close_connection
end
# Called when all data was received and the request
/var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb
in
run_machine
@reactor_running = true
initialize_event_machine
(b = blk || block) and add_timer(0, b)
if @next_tick_queue && !@next_tick_queue.empty?
add_timer(0) { signal_loopbreak }
end
@reactor_thread = Thread.current
run_machine
ensure
until @tails.empty?
@tails.pop.call
end
begin
release_machine
/var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb
in
run
@reactor_running = true
initialize_event_machine
(b = blk || block) and add_timer(0, b)
if @next_tick_queue && !@next_tick_queue.empty?
add_timer(0) { signal_loopbreak }
end
@reactor_thread = Thread.current
run_machine
ensure
until @tails.empty?
@tails.pop.call
end
begin
release_machine
/var/lib/gems/1.8/gems/thin-1.2.7/lib/thin/backends/base.rb
in
start
@running = true
end
# Allow for early run up of eventmachine.
if EventMachine.reactor_running?
starter.call
else
EventMachine.run(&starter)
end
end
# Stop of the backend from accepting new connections.
def stop
@running = false
@stopping = true
/var/lib/gems/1.8/gems/thin-1.2.7/lib/thin/server.rb
in
start
log ">> Thin web server (v#{VERSION::STRING} codename #{VERSION::CODENAME})"
debug ">> Debugging ON"
trace ">> Tracing ON"
log ">> Maximum connections set to #{@backend.maximum_connections}"
log ">> Listening on #{@backend}, CTRL+C to stop"
@backend.start
end
alias :start! :start
# == Gracefull shutdown
# Stops the server after processing all current connections.
# As soon as this method is called, the server stops accepting
# new requests and wait for all current connections to finish.
/var/lib/gems/1.8/gems/thin-1.2.7/lib/thin/controllers/controller.rb
in
start
# If a stats URL is specified, wrap in Stats adapter
server.app = Stats::Adapter.new(server.app, @options[:stats]) if @options[:stats]
# Register restart procedure which just start another process with same options,
# so that's why this is done here.
server.on_restart { Command.run(:start, @options) }
server.start
end
def stop
raise OptionRequired, :pid unless @options[:pid]
tail_log(@options[:log]) do
if Server.kill(@options[:pid], @options[:force] ? 0 : (@options[:timeout] || 60))
/var/lib/gems/1.8/gems/thin-1.2.7/lib/thin/runner.rb
in
send
when cluster? then Controllers::Cluster.new(@options)
when service? then Controllers::Service.new(@options)
else Controllers::Controller.new(@options)
end
if controller.respond_to?(@command)
begin
controller.send(@command, *@arguments)
rescue RunnerError => e
abort e.message
end
else
abort "Invalid options for command: #{@command}"
end
end
/var/lib/gems/1.8/gems/thin-1.2.7/lib/thin/runner.rb
in
run_command
when cluster? then Controllers::Cluster.new(@options)
when service? then Controllers::Service.new(@options)
else Controllers::Controller.new(@options)
end
if controller.respond_to?(@command)
begin
controller.send(@command, *@arguments)
rescue RunnerError => e
abort e.message
end
else
abort "Invalid options for command: #{@command}"
end
end
/var/lib/gems/1.8/gems/thin-1.2.7/lib/thin/runner.rb
in
run!
@arguments = @argv
end
# Parse the current shell arguments and run the command.
# Exits on error.
def run!
if self.class.commands.include?(@command)
run_command
elsif @command.nil?
puts "Command required"
puts @parser
exit 1
else
abort "Unknown command: #{@command}. Use one of #{self.class.commands.join(', ')}"
end
/var/lib/gems/1.8/gems/thin-1.2.7/bin/thin
in
nil
#!/usr/bin/env ruby
# Thin command line interface script.
# Run <tt>thin -h</tt> to get more usage.
require 'thin'
Thin::Runner.new(ARGV).run!
/usr/local/bin/thin
in
load
if str =~ /\A_(.*)_\z/
version = $1
ARGV.shift
end
end
gem 'thin', version
load Gem.bin_path('thin', 'thin', version)
/usr/local/bin/thin
in
nil
if str =~ /\A_(.*)_\z/
version = $1
ARGV.shift
end
end
gem 'thin', version
load Gem.bin_path('thin', 'thin', version)
No GET data.
No POST data.
Variable | Value |
---|---|
GATEWAY_INTERFACE | CGI/1.2 |
HTTP_ACCEPT | */* |
HTTP_CONNECTION | close |
HTTP_HOST | yegordyachkov.com |
HTTP_REFERER | http://yegordyachkov.com/fr/pages/medias/albums/disk:triple-forte-slash-ravel-%257C-shostakovich-%257C-ives-trios-triple-forte |
HTTP_USER_AGENT | claudebot |
HTTP_VERSION | HTTP/1.0 |
HTTP_X_FORWARDED_FOR | 18.204.214.205 |
HTTP_X_REAL_IP | 18.204.214.205 |
PATH_INFO | /fr/pages/medias/albums/disk:triple-forte-slash-ravel-%257C-shostakovich-%257C-ives-trios-triple-forte |
QUERY_STRING | |
REMOTE_ADDR | 172.18.0.1 |
REQUEST_METHOD | GET |
REQUEST_PATH | /fr/pages/medias/albums/disk:triple-forte-slash-ravel-%257C-shostakovich-%257C-ives-trios-triple-forte |
REQUEST_URI | /fr/pages/medias/albums/disk:triple-forte-slash-ravel-%257C-shostakovich-%257C-ives-trios-triple-forte |
SCRIPT_NAME | |
SERVER_NAME | yegordyachkov.com |
SERVER_PORT | 80 |
SERVER_PROTOCOL | HTTP/1.1 |
SERVER_SOFTWARE | thin 1.2.7 codename No Hup |
async.callback | #<Method: Thin::Connection#post_process> |
async.close | #<EventMachine::DefaultDeferrable:0x7f4a1bf22468> |
rack.errors | #<Object:0x7f4a1bf025a0> |
rack.input | #<StringIO:0x7f4a1bf230c0> |
rack.multiprocess | false |
rack.multithread | false |
rack.request.query_hash | {} |
rack.request.query_string | |
rack.run_once | false |
rack.session | {:locale=>"fr"} |
rack.url_scheme | http |
rack.version | [1, 0] |
sinatra.error | #<NoMethodError: undefined method `cover' for nil:NilClass> |
You're seeing this error because you have
enabled the show_exceptions
setting.