Ошибка "неопределенная локальная переменная или метод` logger '"при использовании` logger.info` в приложении Sinatra - PullRequest
5 голосов
/ 05 апреля 2011

У меня есть следующий код приложения Sinatra 1.2.1:

# app.rb
require 'sinatra'

get '/' do
  logger.info "COUCOU"
  'Hello world!'
end

и запустите сервер с ruby -rubygems app.rb. Когда я перехожу на http://localhost:4567, я получаю сообщение об ошибке:

NameError at /
undefined local variable or method `logger' for #<Sinatra::Application:0x00000100d91f88>
file: app.rb location: block in <main> line: 4

Нужно ли что-то добавлять или настраивать для включения входа в Sinatra? Читая Sinatra README и документацию, похоже, что регистрация включена по умолчанию для Sinatra::Application.

Ответы [ 3 ]

5 голосов
/ 18 декабря 2011

Проблема в методе not found write, просто расширьте класс Logger таким образом, и все должно быть в порядке:

class Logger
  # Make Rack::CommonLogger accept a Logger instance
  # without raising undefined method `write' for #<Logger:0x007fc12db61778>
  # makes a method alias using symbols

  alias :write :<<
end
2 голосов
/ 05 апреля 2011

Возможно, вам не хватает logger = Logger.new.

http://www.ruby -doc.org / STDLIB / libdoc / регистратор / RDoc /

0 голосов
/ 05 апреля 2016

Logger не определен, для преодоления его можно просто использовать

Rails.logger.info "COUCOU" 

или определите это так:

logger = Rails.logger.new
logger.info "COUCOU"
...