2016-12-19 1 views
3

레일 5를 사용하여 레일즈 애플리케이션에 루비를 만들고 있는데, 정보를 기록하고 싶은 몇 가지 레이크 작업이 있습니다. 그러나 로거에 액세스하려고하면 정의되지 않은 로컬 변수 또는 메서드`logger '가 발생합니다.rake 작업에서 레일 로거 사용하기, 레일 5

lib/tasks에 내 레이크 작업이 있고 프로덕션 .rb 및 로거 모두에서 로거를 선언했습니다.

namespace :some_namespace do 
    desc "a description" 
    task :scrape_info do 
     include Scraper 
     startTime = Time.now 
     Rails.logger.tagged("Scraper") { Rails.logger.info "Beginning scrape: #{startTime} " } 
     Scraper.scrape_info 
     endTime = Time.now 
     Rails.logger.tagged("Scraper") { Rails.logger.info "Finished scrape: #{endTime} " } 
    end 
end 

내가 로거가 정의한 development.rb에서 발췌 :

config.logger = Logger.new(STDOUT) 
config.log_level = :info 
config.logger = ActiveSupport::TaggedLogging.new(logger) 

모든 아이디어를 어떻게 incorpora 여기를

developement.rb

는 예를 들어 작업입니다 로거를 레이크 작업에 사용 하시겠습니까? 나는 단순히 표준 출력에 인쇄 할 박았 문을 사용할 수 있지만 결국 나는 매일 로그 파일을 가지고 싶습니다, 나는 내 레이크 작업이 해당 파일에 포함하고자하는 것을 이해

답변 : 간단히 @Joel_Blum의 응답에 주어진 환경 태그를 추가하십시오. 또한, 라인, development.rb에

config.logger = ActiveSupport::TaggedLogging.new(logger) 

은 할 필요가 :

config.logger = ActiveSupport::TaggedLogging.new(config.logger) 
+0

가능한 복제 [레이크에있는 '환경'작업 무엇?] (http://stackoverflow.com/questions/7044714/whats-the-environment-task-in-rake) –

+0

가 나는 것을보고 원래 환경이 추가 되었기 때문에 내 문제가 다르다고 생각했습니다. 그러나 실제 문제는 development.rb에서 간단한 오타였습니다. –

+0

어쨌든 고마워요! –

답변

3

시도가 환경을 추가, 이것은 당신의 레일 응용 프로그램을로드의 영향을 미칠 것입니다. 의

task :scrape_info => :environment do 
    ... 
end 
+0

감사! 이것은 도움이되었습니다 - 환경 부분을 추가했는데 여전히 동일한 오류가 있습니다. 오류에 대한 진정한 원인은 development.rb의 오타였습니다. –