Написать пост

Dry-rb — мощный инструмент для построения чистого и гибкого Ruby-кода

Аватарка пользователя Егор Щербаков

Dry-rb - это семейство библиотек Ruby для создания легкого и масштабируемого кода. Рассмотрели основные компоненты dry-rb с примерами кода.

Обложка поста Dry-rb — мощный инструмент для построения чистого и гибкого Ruby-кода

Dry-rb – это семейство библиотек Ruby, предназначенных для создания легкого, модульного и масштабируемого кода. В этом статье мы рассмотрим основные компоненты dry-rb и рассмотрим примеры кода, чтобы продемонстрировать их функциональность.

Dry-Types

Dry-Types предоставляет возможность определять и использовать строгие типы данных в Ruby. Это позволяет сделать код более надежным и понятным. Вот пример:

			require 'dry-types'

module Types
  include Dry.Types()
end

class User
  attr_reader :name, :age

  def initialize(name, age)
    @name = Types::Strict::String[name]
    @age = Types::Strict::Integer[age]
  end
end

user = User.new("John Doe", 30)
puts user.name # "John Doe"
puts user.age # 30
		

Dry-Struct

Dry-Struct – это простой и легковесный способ определения структур данных с строгой типизацией. Он помогает избежать нежелательных мутаций объектов и обеспечивает простой доступ к атрибутам. Вот пример:

			require 'dry-struct'

module Types
  include Dry.Types()
end

class Point < Dry::Struct
  attribute :x, Types::Strict::Integer
  attribute :y, Types::Strict::Integer
end

point = Point.new(x: 10, y: 20)
puts point.x # 10
puts point.y # 20
		

Dry-Validation

Dry-Validation предоставляет декларативный способ проверки данных и валидации входных параметров. Он помогает управлять сложной валидацией и предоставляет легкую интеграцию с другими инструментами проверки данных. Вот пример:

			require 'dry-validation'

schema = Dry::Validation.Schema do
  required(:name).filled(:string)
  required(:age).filled(:integer, gt?: 18)
end

result = schema.call(name: "John Doe", age: 30)
puts result.success? # true

result = schema.call(name: "", age: 16)
puts result.success? # false
puts result.errors # { name: ["must be filled"], age: ["must be greater than 18"] }
		

Dry-rb предлагает широкий спектр инструментов, которые помогают разработчикам создавать более чистый, гибкий и надежный код на языке Ruby. В этой статье мы кратко рассмотрели dry-types, dry-struct и dry-validation, но dry-rb также включает другие библиотеки, такие как dry-transaction и dry-view, которые улучшают разработку программного обеспечения в различных областях. Если вы хотите узнать больше о dry-rb, рекомендуется ознакомиться с его официальной документацией и начать применять его в своих проектах для достижения более высокого уровня качества кода.

Следите за новыми постами
Следите за новыми постами по любимым темам
526 открытий1К показов