Computer >> Máy Tính >  >> Lập trình >> Ruby

5 ví dụ hữu ích từ thư viện chuẩn Ruby

Thư viện chuẩn Ruby là một loạt các mô-đun &lớp đi kèm với Ruby nhưng không phải là một phần của chính ngôn ngữ đó.

Các lớp học này cung cấp một loạt các tiện ích như:

  • Mã hóa Base64
  • Tạo số nguyên tố
  • Độ phân giải DNS

Trong bài viết này, tôi sẽ chỉ cho bạn 5 trong số các lớp này với các ví dụ hữu ích.

Lớp ghi nhật ký Ruby

Nếu bạn cần ghi lại một số lỗi hoặc thông báo gỡ lỗi, Ruby sẽ bảo bạn bằng Logger lớp học.

Lớp này cung cấp mọi thứ bạn cần để bắt đầu ghi nhật ký!

Để sử dụng Logger bạn chỉ cần tạo một Logger đối tượng &cung cấp cho nó một luồng đầu ra (hoặc tên tệp) dưới dạng tham số. Sau đó, bạn có thể sử dụng các cấp độ ghi nhật ký khác nhau để đăng ký tin nhắn của mình.

Các cấp độ ghi nhật ký là:

  • gỡ lỗi
  • thông tin
  • cảnh báo
  • lỗi
  • gây tử vong

Ví dụ :

require 'logger'

logger = Logger.new(STDOUT)

logger.info 'testing...'
logger.warn 'fun with Ruby :)'

Điều này tạo ra kết quả sau :

I, [2016-05-14T15:50:21.367590 #12148]  INFO -- : testing...
W, [2016-05-14T15:50:21.846651 #12148]  WARN -- : fun with Ruby 🙂

Ký tự đầu tiên là dạng viết tắt của cấp độ ghi nhật ký (I for Info, W for Warn)… Sau đó, bạn có dấu thời gian và id quy trình hiện tại (bạn có thể lấy trong Ruby bằng cách sử dụng Process.pid ).

Cuối cùng, bạn đã có đầy đủ cấp độ ghi nhật ký và thông báo thực tế.

Bạn có thể thay đổi định dạng này bằng cách cung cấp một định dạng mới.

Làm việc với các số nguyên tố

Có thể bạn không cần phải xử lý các số nguyên tố hàng ngày, nhưng vẫn nên biết (đặc biệt nếu bạn thích các thử thách lập trình) rằng Ruby có hỗ trợ tốt cho chúng thông qua mã Prime lớp học.

Khi bạn yêu cầu Prime nó sẽ thêm số nguyên tố? phương thức thành Fixnum .

Ví dụ :

require 'prime'

5.prime?  # true
11.prime? # true
20.prime? # false

Lớp này cũng bao gồm một trình tạo số nguyên tố.

Ví dụ :

Prime.take(10)
# [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]

Cách sử dụng lớp StringIO

StringIO lớp cho phép bạn tạo một chuỗi hoạt động giống như một IO đối tượng.

Điều này có nghĩa là bạn có thể làm việc với chuỗi này như thể bạn đang đọc từ một tệp hoặc STDIN (Đầu vào chuẩn).

Đây là một ví dụ :

require 'stringio'

io = StringIO.new

io << 'test'
io << 'code'

puts io.string
# "testcode"

Lưu ý một số điều :

Khi bạn thêm dữ liệu vào StringIO của mình đối tượng nó sẽ không thêm dấu cách hoặc dòng mới cho bạn và để có được chuỗi thực tế, bạn cần gọi string phương pháp.

Ngoài ra, bạn không thể sử dụng lập chỉ mục mảng để truy cập các ký tự riêng lẻ, giống như bạn có thể làm với một chuỗi thông thường.

Khi nào điều này hữu ích?

Đôi khi, bạn có thể muốn thay thế một tệp hoặc một số đối tượng IO khác bằng một đối tượng khác mà bạn có nhiều quyền kiểm soát hơn. Ví dụ:trong môi trường thử nghiệm, bạn có thể thay thế STDOUT với StringIO đối tượng.

Bạn có thể xem một ví dụ trong thế giới thực từ Rails tại đây:https://github.com/rails/rails/blob/52ce6ece8c8f74064bb64e0a0b1ddd83092718e1/activesupport/test/logger_test.rb

Mã hóa &Giải mã Base64

Base64 là một định dạng mã hóa phổ biến trên internet.

Có vẻ như thế này :

"cnVieQ=="

Tại sao nó hữu ích?

URL có một bộ ký tự hạn chế được phép cho phép, đôi khi bạn muốn bao gồm những ký tự đó &Base64 làm cho điều này trở nên khả thi.

Đây là cách mã hóa:

require 'base64'

Base64.encode64("ruby")
"cnVieQ=="

Đây là cách giải mã:

require 'base64'

Base64.decode64("cnVieQ==")
"ruby"

Làm việc với các đường dẫn

Tên đường dẫn lớp bao bọc một số tiện ích khám phá hệ thống tệp, như Dir & Tệp , trong một lớp mạnh hơn nhiều.

Trong khi các tên phương thức giống nhau, chúng trả về Tên đường dẫn các đối tượng thay vì chuỗi hoặc mảng. Và điều này có nghĩa là bạn có thể tiếp tục làm việc với kết quả bằng tất cả các phương pháp liên quan đến tệp.

Đây là một ví dụ tuyệt vời :

require 'pathname'

Pathname.glob("*").count(&:directory?)

Nếu bạn đã cố gắng thực hiện việc này với Dir , bạn sẽ phải sử dụng mã này, mã này không trang nhã bằng.

Dir.glob("*").count { |d| File.directory?(d) }

Hãy thử cái này vào lần sau khi bạn cần thực hiện tác vụ liên quan đến hệ thống tệp 🙂

Kết luận

Tôi hy vọng bạn thấy những ví dụ này hữu ích! Đảm bảo khám phá Thư viện chuẩn nhiều hơn một chút để bạn có thể tìm hiểu những gì nó có thể làm cho bạn.

Đừng quên chia sẻ bài đăng này nếu bạn thích nó 🙂