rails- 콘솔 출력을 파일로 리디렉션
bash 콘솔에서 이렇게하면 :
cd mydir
ls -l > mydir.txt
> 연산자는 표준 입력을 사용하여 파일로 리디렉션합니다. 그래서 mydir.txt
표준 출력 대신에 파일 목록을 얻습니다 .
레일 콘솔에서 어떤 작업을 수행 할 수있는 방법이 있습니까?
많은 인쇄물 (~ 8k 줄)을 생성하는 루비 문이 마지막에 1024 줄 정도만 "기억"합니다. 그래서 파일로 리디렉션하는 방법에 대해 생각했습니다. 더 나은 옵션을 아는 사람이 있으면 모두 귀를 기울입니다.
의 재정 $stdout
를 사용 하여 콘솔 출력을 리디렉션 할 수 있습니다 .
$stdout = File.new('console.out', 'w')
다음과 같이 한 번만 호출해야 할 수도 있습니다.
$stdout.sync = true
그러면 모든 출력이 파일로 리디렉션됩니다. 출력을 일시적으로 리디렉션 원래 값을 저장하여 $stdout
다시 표시 확인하십시오 .
빠른 일회성 솔루션을 찾고 있다면 다음을 사용하십시오.
irb(main):001:0> f = File.new("statements.xml", 'w')
irb(main):002:0> f << Account.find(1).statements.to_xml
irb(main):003:0> f.close
JSON 고정물 만들기
>> f = File.new(Rails.root + 'spec/fixtures/qbo/amy_cust.json', 'w')
>> f << JSON.pretty_generate((q.get :customer, 1).as_json)
>> f.close
Veger의 다른 많은 추가 옵션을 제공하는 또 다른 방법이 있습니다.
rails 프로젝트를 다음 명령을 입력하십시오.
rails c | tee output.txt
tee 명령에는 다음을 통해 확인할 수있는 다른 많은 옵션도 있습니다.
man tee
환경 파일에 다음 코드를 작성하면 작동합니다.
if "irb" == $0
config.logger = Logger.new(Rails.root.join('path_to_log_file.txt'))
end
다음을 사용하여 로그 파일을 회전 할 수도 있습니다.
config.logger = Logger.new(Rails.root.join('path_to_log_file.txt'), number_of_files, file_roation_size_threshold)
활성 레코드 관련 작업 만 로깅 결과 다음을 수행 할 수 있습니다.
ActiveRecord::Base.logger = Logger.new(Rails.root.join('path_to_log_file.txt'))
이 또한 다른 환경에 대해 소개합니다.
Hirb를 사용하면 Hirb 출력 만 텍스트 파일에 기록을 선택할 수 있습니다. 그러면 콘솔 창에 입력 한 명령을 계속 볼 수 있고 모델 출력 만 파일로 이동합니다.
Hirb 의 추가 정보 :
기본적으로 뷰는 STDOUT에 인쇄 할 때 인쇄 할 수 있습니다.
# Setup views to write to file 'console.log'.
>> Hirb::View.render_method = lambda {|output| File.open("console.log", 'w') {|f| f.write(output) } }
# Doesn't write to file because Symbol doesn't have a view and thus defaults to irb's echo mode.
>> :blah
=> :blah
# Go back to printing Hirb views to STDOUT.
>> Hirb::View.reset_render_method
hirb를 사용하십시오 . screenful보다 긴 irb의 모든 출력을 자동으로 페이징합니다. 이 작업을 보려면 콘솔 세션에 제안십시오.
>> require 'rubygems'
>> require 'hirb'
>> Hirb.enable
작동 방식에 대한 자세한 내용은 이 게시물을 참조하십시오 .
script
유닉스 기반 OS 를 사용하는 경우 유틸리티를 사용해보십시오 .
script -c "rails runner -e development lib/scripts/my_script.rb" report.txt
그 덕분에 Rails 러너 확장의 매우 긴 출력을 파일로 쉽게 할 수 있습니다.
파일로 리디렉션을 선호하지만, 최상에서만 작성합니다.
스크립트에 대화 형 명령이 거의 없었기 때문에 도움이되지 않았습니다.
그런 다음 그냥 사용 하고 스크립트 세션 script
을 실행 rails runner
했지만 모든 것을 작성하지는 않았습니다. 그런 다음 이것을 발견 script -c "runner command here" output_file
하고 원하는대로 모든 출력을 저장했습니다. 이것은 Ubuntu 14.04 LTS에있었습니다.
참조 :
참고 URL : https://stackoverflow.com/questions/2461503/rails-redirecting-console-output-to-a-file
'ProgramingTip' 카테고리의 다른 글
생성자가 최종적이 될 수없는 이유 (0) | 2020.10.15 |
---|---|
bash 히스토리를 사용하여 이전 명령을 가져오고 복사 한 다음 '실행'하지만 명령이 주석 처리됨 (0) | 2020.10.15 |
파일을 업로드하기 전에 파일 확인 확인 (0) | 2020.10.15 |
MySQL에서는 어디에서나 주석을 어떻게 제거 할 수 있습니까? (0) | 2020.10.15 |
Postgres 오류 "파라미터"TimeZone "에 대한 잘못된 값 :"UTC "" (0) | 2020.10.15 |