如何将 ActiveSupport::Configurable 与 Rails Engine 一起使用

2023-11-26

我想给我的轨道引擎宝石适当的配置可能性。 看起来像这样的东西initializers/my_gem.rb (链接到当前的初始化程序):

MyGem.configure do |config|
  config.awesome_var = true
  # config.param_name = :page
end

所以我四处寻找其他宝石中的任何线索,我云发现的最好的就是这个kaminari/config.rb。 但它看起来太老套了,我想一定有更好的方法。


源文件为ActiveSupport::Configurable得到了不错的文档:https://github.com/rails/rails/blob/master/activesupport/lib/active_support/configurable.rb

我喜欢将配置放入引擎中它自己的类中(就像 kaminari 所做的那样):

class MyGem
  def self.configuration
    @configuration ||= Configuration.new
  end

  def self.configure
    yield configuration
  end
end

class MyGem::Configuration
  include ActiveSupport::Configurable

  config_accessor(:foo) { "use a block to set default value" }
  config_accessor(:bar) # no default (nil)
end

现在我可以使用此 API 配置引擎:

MyGem.configure do |config|
  config.bar = 'baz'
end

并使用以下命令访问配置

MyGem.configuration.bar
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 ActiveSupport::Configurable 与 Rails Engine 一起使用 的相关文章

随机推荐

  • 下载功能因文件过大而失败

    你好 我的下载功能 protected void downloadFunction string fileName string filePath D SoftwareFiles LogMessageToFile Download star
  • 具有 ASPN、应用内购买等的多个应用程序中的应用程序 ID 和捆绑种子 ID

    我将创造多个销售版本具有推送通知功能的同一应用程序 酷应用 完整版 CoolApp Free 免费 功能有限 版本 酷应用程序中的应用程序 免费版 可通过应用内升级至完整版 购买 在 Apple Program Portal 中注册 App
  • 在正则表达式中将空格转换为制表符

    在正则表达式中如何表达以下内容 foreach line look at the beginning of the string and convert every group of 3 spaces to a tab Stop once
  • 我应该如何在 JavaScript 中“屈服”?

    我对现代 JavaScript ES8 有点陌生 异步产生的首选方法是什么 即在事件循环的未来迭代中继续执行脚本 使用await 我看到了以下选项 async function yield1 await Promise resolve co
  • 将 std::unique_ptr 与分配器一起使用

    这次我尝试使用分配器 感觉有很多机会泄漏资源 所以我想如果我用怎么办std unique ptr来处理它们 我试着用我的手std vector的分配器 我的代码是这样的 allocator include
  • PHP 不带引号的数组访问

    我在现有的 php 源代码中发现了一个现象 不带撇号的字段访问 如下所示 GET test 我不确定 也不知道这是一种可能的方式 所以我写了一个简短的例子来测试 echo Array Test fields without apostrop
  • 使用 asyncio 的相互递归协程

    我有一个假设 如果我用 asyncio 编写相互递归协程 它们不会遇到最大递归深度异常 因为事件循环正在调用它们 并且像蹦床一样运行 然而 当我这样写时 情况并非如此 import asyncio asyncio coroutine def
  • python 在 root 脚本中以普通用户身份运行命令

    我有一个以 root 身份启动的 python 脚本 我无法更改它 我想知道是否可以以普通用户身份执行此脚本的某些行 或所有脚本 我不需要 root 权限来运行此脚本 原因是 我使用通知 并且 python notify 不适用于 root
  • 如何查找具有相同捆绑包标识符的多个应用程序?

    有谁知道 在文件系统中 查找具有给定包标识符的每个应用程序的好方法 NSWorkspace和启动服务可让您通过捆绑包标识符查找应用程序 但仅返回单个结果 我怀疑聚光灯 NSMetadataQuery 可能会有所帮助 但我对其 API 有点不
  • 如何使用 s3 中的预训练模型来预测某些数据?

    我已经使用 sagemaker 训练了语义分割模型 并且输出已保存到 s3 存储桶中 我想从 s3 加载这个模型来预测 sagemaker 中的一些图像 我知道如何预测训练后是否让笔记本实例继续运行 因为它只是一个简单的部署 但如果我想使用
  • 向 Python enum.IntEnum 添加属性和起始值

    如何定义一个以某种方式派生的 Python 枚举类int 具有自定义起始值 并添加自定义属性 我知道如何从中得出int using enum IntEnum并设置起始值 Goo enum IntEnum Goo MOO FOO LOO st
  • Keras:重塑以连接 lstm 和 conv

    这个问题作为一个问题而存在github问题 也 我想在 Keras 中构建一个神经网络 其中包含 2D 卷积和 LSTM 层 网络应对 MNIST 进行分类 MNIST中的训练数据是60000张手写数字0到9的灰度图像 每张图像都是28x2
  • Android 模拟器将 600x1024 MDPI 报告为 XLarge?

    我目前正在尝试测试现有应用程序与即将发布的 Amazon Kindle Fire 平板电脑的兼容性 他们说将模拟器设置为 600x1024 将 LCD 密度设置为 169 https developer amazon com help fa
  • Pandas DataFrames/Series 之间的大于/小于比较

    如何在 DataFrame 和 Series 之间进行比较 我想屏蔽 DataFrame Series 中大于 小于另一个 DataFrame Series 中的元素的元素 例如 以下内容不会替换大于平均值的元素 与 nans 一起 尽管我
  • ReactJS.NET MVC 教程不起作用?

    我正在尝试在 Visual Studio 中设置一个新项目 该项目将是 MVC 5 其中包含用 ReactJS 编写的单页应用程序 所以我跟着ReactJS 网站上的指南 我到达了运行项目的第一部分 由于 JSX 我遇到了语法错误 浏览器似
  • 毫无例外地处理 STL 错误

    我有一个项目大量使用STL 现在我正在努力将项目移植到不支持异常的特定平台 我可以禁用异常 但是我仍然需要处理 STL 错误 是否有任何方法可以在禁用异常的情况下正确处理 STL 错误 是否有任何第三方 STL 实现可以帮助解决这个问题 使
  • 获取 Javascript 变量类型的更好方法?

    在 JS 中是否有更好的方法来获取变量的类型typeof 当你这样做时它工作得很好 gt typeof 1 number gt typeof hello string 但当你尝试时它是无用的 gt typeof 1 2 object gt
  • 当前文件中未定义导出默认异步函数

    以下效果完美 export default function x return hello world export function y return x console log y 但这不起作用 export default async
  • 使用 CMake 查找 BLAS 包含目录

    在 CMake 中我使用find package BLAS REQUIRED 我用BLAS FOUND BLAS LINKER FLAGS BLAS LIBRARIES适当的变量 我的问题是 如何根据已选择的 BLAS 实现找到 CMake
  • 如何将 ActiveSupport::Configurable 与 Rails Engine 一起使用

    我想给我的轨道引擎宝石适当的配置可能性 看起来像这样的东西initializers my gem rb 链接到当前的初始化程序 MyGem configure do config config awesome var true config