dry-configurable 使用教程

dry-configurable 使用教程

dry-configurableA simple mixin to make Ruby classes configurable项目地址:https://gitcode.com/gh_mirrors/dr/dry-configurable

项目介绍

dry-configurable 是一个用于为 Ruby 类添加线程安全配置行为的简单 mixin。它允许开发者轻松地为他们的类或模块添加配置选项,支持嵌套配置、默认值设置、构造值处理以及生成读取器方法等功能。这个 gem 的诞生是为了将配置行为封装成一个可重用的组件,避免在多个库中重复实现相似的功能。

项目快速启动

安装

首先,你需要在你的 Gemfile 中添加 dry-configurable

gem 'dry-configurable'

然后运行 bundle install

基本使用

以下是一个简单的示例,展示如何使用 dry-configurable 为你的类添加配置选项:

require 'dry-configurable'

class App
  extend Dry::Configurable

  # 添加一个配置选项
  setting :database do
    setting :dsn, default: 'sqlite:memory'
  end

  setting :adapter

  setting :path, default: 'test', constructor: proc { |value| Pathname(value) }

  setting :pool, default: 5, reader: true

  setting :uploader, reader: true do
    setting :bucket, default: 'dev'
  end
end

# 使用配置
puts App.config.database.dsn # => "sqlite:memory"
App.config.database.dsn = 'jdbc:sqlite:memory'
puts App.config.database.dsn # => "jdbc:sqlite:memory"
puts App.config.adapter # => nil
puts App.config.path # => #<Pathname:test>
puts App.pool # => 5
puts App.uploader.bucket # => 'dev'

应用案例和最佳实践

应用案例

假设你正在开发一个 Web 应用,并且需要为不同的环境(开发、测试、生产)配置不同的数据库连接。使用 dry-configurable 可以轻松实现这一点:

class WebApp
  extend Dry::Configurable

  setting :environment, default: :development

  setting :database do
    setting :dsn, default: 'sqlite:memory'
    setting :username
    setting :password
  end
end

# 根据环境配置数据库
if WebApp.config.environment == :production
  WebApp.config.database.dsn = 'mysql://prod_db'
  WebApp.config.database.username = 'prod_user'
  WebApp.config.database.password = 'prod_pass'
elsif WebApp.config.environment == :test
  WebApp.config.database.dsn = 'sqlite::memory:'
else
  WebApp.config.database.dsn = 'sqlite:dev_db'
end

最佳实践

  1. 使用默认值:为配置选项提供默认值,以便在未显式设置时仍能正常工作。
  2. 嵌套配置:使用嵌套配置来组织复杂的配置选项,使其更易于管理和理解。
  3. 读取器方法:通过设置 reader: true 自动生成读取器方法,简化配置值的访问。

典型生态项目

dry-configurabledry-rb 生态系统的一部分,该生态系统包含多个相关的 gem,共同提供了一套完整的工具集,用于构建健壮和可维护的 Ruby 应用。以下是一些典型的生态项目:

  • dry-core: 提供核心功能和实用工具。
  • dry-container: 轻量级的依赖注入容器。
  • dry-types: 强大的类型系统,用于定义和验证数据结构。
  • dry-validation: 用于数据验证的高级 DSL。

通过结合使用这些 gem,你可以构建出结构清晰、功能强大的 Ruby 应用。

dry-configurableA simple mixin to make Ruby classes configurable项目地址:https://gitcode.com/gh_mirrors/dr/dry-configurable

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

田发滔Gwendolyn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值