Ruby 표준 라이브러리는 Ruby와 함께 제공되지만 언어 자체의 일부는 아닌 일련의 모듈 및 클래스입니다.
이 클래스는 다음과 같은 다양한 유틸리티를 제공합니다.
- Base64 인코딩
- 소수 생성
- DNS 확인
이 기사에서는 유용한 예제와 함께 이러한 클래스 중 5개를 보여 드리겠습니다.
Ruby 로거 클래스
일부 오류 또는 디버그 메시지를 기록해야 하는 경우 Ruby에서 Logger
로 처리했습니다. 수업.
이 클래스는 로깅을 시작하는 데 필요한 모든 것을 제공합니다!
Logger
를 사용하려면 클래스는 Logger
를 생성하기만 하면 됩니다. object &매개변수로 출력 스트림(또는 파일 이름)을 제공합니다. 그런 다음 다른 로깅 수준을 사용하여 메시지를 등록할 수 있습니다.
로깅 수준은 다음과 같습니다.
- 디버그
- 정보
- 경고
- 오류
- 치명적
예 :
require 'logger'logger =Logger.new(STDOUT)logger.info 'testing...'logger.warn 'Fun with Ruby :)'
다음 출력을 생성합니다. :
나, [2016-05-14T15:50:21.367590 #12148] INFO -- :testing...W, [2016-05-14T15:50:21.846651 #12148] WARN -- :루비로 즐겨요 🙂사전>첫 번째 문자는 로깅 수준의 축약된 형태입니다(I는 Info, W는 Warn)... 그런 다음 타임스탬프와 현재 프로세스 ID(
Process.pid
를 사용하여 Ruby에서 가져올 수 있음)가 있습니다. ).마지막으로 전체 로깅 수준과 실제 메시지가 있습니다.
새 포맷터를 제공하여 이 형식을 변경할 수 있습니다.
소수 작업
일상적으로 소수를 다룰 필요가 없을 수도 있지만 Ruby가
Prime
수업.
Prime
이 필요할 때prime?
를 추가합니다.Fixnum
메소드 .예 :
'프라임'5.프라임이 필요합니까? # true11.프라임? # true20.프라임? # 거짓이 클래스에는 소수 생성기도 포함되어 있습니다.
예 :
Prime.take(10)# [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]StringIO 클래스 사용 방법
StringIO
클래스를 사용하면IO
처럼 작동하는 문자열을 만들 수 있습니다. 개체.이는 파일이나
STDIN
에서 읽는 것처럼 이 문자열로 작업할 수 있음을 의미합니다. (표준 입력).예시입니다 :
요구 'stringio'io =StringIO.newio <<'test'io <<'code'puts io.string# "testcode"몇 가지 주의사항 :
StringIO
에 데이터를 추가할 때 객체는 공백이나 줄 바꿈을 추가하지 않으며 실제 문자열을 얻으려면string
을 호출해야 합니다. 방법.또한 배열 인덱싱을 사용하여 일반 문자열과 같이 개별 문자에 액세스할 수 없습니다.
언제 유용합니까?
글쎄, 때때로 당신은 당신이 더 많이 제어할 수 있는 다른 개체를 파일이나 다른 IO 개체로 대체하고 싶을 수 있습니다. 예를 들어 테스트 환경에서
STDOUT
StringIO
사용 개체.여기에서 Rails의 실제 예를 볼 수 있습니다. https://github.com/rails/rails/blob/52ce6ece8c8f74064bb64e0a0b1ddd83092718e1/activesupport/test/logger_test.rb
Base64 인코딩 및 디코딩
Base64는 인터넷에서 일반적으로 사용되는 인코딩 형식입니다.
이렇게 생겼어요 :
"cnVieQ=="왜 유용한가요?
URL에는 허용되는 제한된 문자 집합이 있습니다. 때로는 이러한 문자를 포함하고 싶은 경우 Base64가 이를 가능하게 합니다.
인코딩 방법은 다음과 같습니다.
'base64'Base64.encode64("ruby")"cnVieQ=="필요디코딩하는 방법은 다음과 같습니다.
'base64'Base64.decode64("cnVieQ==")"ruby" 필요경로 작업
Pathname
클래스는Dir
과 같은 여러 파일 시스템 탐색 유틸리티를 래핑합니다. &File
, 훨씬 더 강력한 클래스에서.메서드 이름은 동일하지만
Pathname
을 반환합니다. 문자열이나 배열 대신 객체. 이것이 의미하는 바는 모든 파일 관련 방법을 사용하여 결과로 계속 작업할 수 있다는 것입니다.좋은 예입니다 :
'pathname'Pathname.glob("*").count(&:directory?) 필요
Dir
로 이 작업을 시도한 경우 , 우아하지 않은 이 코드를 사용해야 합니다.Dir.glob("*").count { |d| File.directory?(d) }다음에 파일 시스템 관련 작업을 수행해야 할 때 이것을 시도하십시오 🙂
결론
이 예제가 유용했기를 바랍니다! 표준 라이브러리를 좀 더 탐색하여 이것이 무엇을 할 수 있는지 알아보십시오.
이 게시물이 마음에 들면 공유하는 것을 잊지 마세요 🙂