ProgramingTip

rails- 콘솔 출력을 파일로 리디렉션

bestdevel 2020. 10. 15. 08:09
반응형

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에있었습니다.

참조 :

https://askubuntu.com/questions/290322/how-to-get-and-copy-a-too-long-output-completely-in-terminal#comment1668695_715798

Ruby 콘솔 출력을 텍스트 파일에 쓰기

참고 URL : https://stackoverflow.com/questions/2461503/rails-redirecting-console-output-to-a-file

반응형