bash 콘솔에서 이렇게하면 :
cd mydir
ls -l > mydir.txt
> 연산자는 표준 입력을 캡처하여 파일로 리디렉션합니다. 그래서 mydir.txt
표준 출력 대신에 파일 목록을 얻습니다 .
레일 콘솔에서 비슷한 작업을 수행 할 수있는 방법이 있습니까?
많은 인쇄물 (~ 8k 줄)을 생성하는 루비 문이 있고이를 완전히보고 싶지만 콘솔은 마지막 1024 줄 정도만 “기억”합니다. 그래서 파일로 리디렉션하는 방법에 대해 생각했습니다. 더 나은 옵션을 아는 사람이 있다면 모두 귀입니다.
답변
재정의 $stdout
를 사용 하여 콘솔 출력을 리디렉션 할 수 있습니다 .
$stdout = File.new('console.out', 'w')
다음과 같이 한 번만 호출해야 할 수도 있습니다.
$stdout.sync = true
그러면 모든 출력이 파일로 리디렉션됩니다. 출력을 일시적으로 리디렉션하려면 원래 값을 저장하여 $stdout
다시 변경할 수 있는지 확인하십시오 .
답변
빠른 일회성 솔루션 :
irb:001> f = File.new('statements.xml', 'w')
irb:002> f << Account.find(1).statements.to_xml
irb:003> f.close
JSON 고정물을 만듭니다.
irb:004> f = File.new(Rails.root + 'spec/fixtures/qbo/amy_cust.json', 'w')
irb:005> f << JSON.pretty_generate((q.get :customer, 1).as_json)
irb:006> 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
Unix 기반 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에있었습니다.
참조 :
/ubuntu/290322/how-to-get-and-copy-a-too-long-output-completely-in-terminal#comment1668695_715798