Rails 3未登录开发

Kyl*_*cot 5 ruby-on-rails ruby-on-rails-3

我试过调用两个logger.debug,Rails.logger.debug但没有任何东西输出到development.log文件.关于什么事情的任何想法?

更新

我还应该注意,我是从控制器调用它,并且其他信息(如SQL查询)将输出到日志文件中.

源代码

https://github.com/kyledecot/skateparks-web

的Gemfile

source 'http://rubygems.org/'

gem 'rails', '3.0.7'
gem 'rake', '~> 0.8.7'
gem 'devise'
gem 'omniauth'
gem 'flash_cookie_session'
gem 'carrierwave'
gem 'mini_magick'
gem 'barometer'
gem 'gdata_19', :require => 'gdata'
gem 'google_places'
gem 'fleakr'
gem 'resque'
gem 'nokogiri'
gem 'decent_exposure'
gem 'cancan'
gem 'friendly_id'
gem 'breadcrumbs_on_rails'
gem 'defensio'
gem 'twitter'
gem 'thinking-sphinx', :require => 'thinking_sphinx'
gem 'ts-resque-delta', '1.0.0', :require => 'thinking_sphinx/deltas/resque_delta'
gem 'mime-types', :require => 'mime/types'
gem 'vpim'
gem 'will_paginate', '~> 3.0.pre2'
gem 'acts_as_geocodable'
gem 'acts_as_audited', '2.0.0.rc7'
gem 'passenger'
gem 'paper_trail'
gem 'thin'
gem 'compass', '>= 0.11.1'
gem 'guard-compass'
gem 'redcarpet'
gem 'mysql2', '0.2.7'
gem 'placemaker'

group :development, :test do

  gem 'sqlite3'
  gem 'capybara'  
  gem 'launchy'
  gem "rspec-rails"
  gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i
  gem 'guard-rspec'
  gem 'guard-bundler'
  gem 'guard-delayed'
  gem 'factory_girl'
  gem 'rspec'

end

group :production do 
end
Run Code Online (Sandbox Code Playgroud)

enviornment.rb

require File.expand_path('../application', __FILE__)
Skateparks::Application.initialize!
ActiveRecord::Base.logger.level = Logger::INFO
Run Code Online (Sandbox Code Playgroud)

ImagesController

def server
  logger.warn "WARN!" # nothing
  logger.info "INFO!" # nothing
  logger.debug "DEBUG!" # nothing
  puts Rails.logger.inspect # shows
  puts "PUTS!" # shows
end
Run Code Online (Sandbox Code Playgroud)

记录输出w/rails s

#<ActiveSupport::BufferedLogger:0x000001058867a0 @level=0, @buffer={}, @auto_flushing=1, @guard=#<Mutex:0x000001058866b0>, @log=#<File:/Users/Kyle/Desktop/skateparks-web/log/development.log>>
PUTS!


Started GET "/images/fd3b38315c30532b3a55bb84d35e5925/34_m.png" for 127.0.0.1 at 2011-06-29 03:41:50 -0400
  User Load (0.3ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
Run Code Online (Sandbox Code Playgroud)

Zab*_*bba 10

更新:

Viget Labs已从其回购中删除了可记录的gem( https://github.com/vigetlabs/loggable )


您应用中的某些gem正在使用vigetlabs/loggable gem.看Gemfile.lock,似乎"fleakr"宝石正在使用它.

我注意到虽然logger.info "hello"不起作用,但Rails.logger.info "hello"工作得很好.

似乎在为loggable宝石以某种方式重新定义了记录仪方法采用什么都不做LoggerStub:

class LoggerStub

  [:debug, :error, :fatal, :info, :warn].each do |method|
    class_eval <<-CODE
      def #{method}(message); nil; end
    CODE
  end

end
Run Code Online (Sandbox Code Playgroud)

发生的事情是,loggable gem定义了一个类变量和一个名为的实例变量logger,并且.info在其中一个上调用了etc方法.而这些方法只是回归nil.

我知道这是一个部分答案(因为它不是一个完整的解决方案),但这应该是很好的信息,让你开始寻找合适的解决方案.

看看这些文件:

  1. log_methods.rb
  2. logger_stub.rb

UPDATE

添加..

class ActionController::Base
    self.class.logger = Rails.logger
end
Run Code Online (Sandbox Code Playgroud)

..应该强制覆盖loggable对记录器的赋值,事情应该正常工作.我认为同样适用class ActiveRecord::Base.

但当然,这是一个无法解决潜在问题的蛮力解决方案.对于真正的"修复",您需要进一步深入研究fleakr或loggable,并在问题页面上询问这些问题.

UPDATE

看看你是否可以让fleakr gem使用来自mediashelfloggable fork:该fork应该使用默认的Rails记录器(如果可用).