如何将 Rails 视图助手提取到 gem 中?

2024-03-12

我有一组经常使用的 Rails 视图助手,并且想将它们打包成一个 gem,这样我就可以在 Gemfile 中添加一行,并从我的视图中访问这些助手。

我在使用 Bundler 和 Jeweler 之前已经创建了 gem,但是,我不太清楚如何在 gem 中组织 Rails 视图助手,并将它们包含到 Rails 中。

如果您能提供有关如何针对 Rails 3 执行此操作的任何指示或最新教程的链接,我将不胜感激

Thanks

只是为了澄清:问题不在于“如何创建宝石”。它是“如何将视图助手打包在 gem 中,以便我可以在 Rails 中使用它们”

编辑2: 我也同意下面的海报。对于这种(希望很简单)的要求,Rails 引擎实在是太过分了。


在我看来,一个完整的Engine https://stackoverflow.com/questions/5791211/how-do-i-extract-rails-view-helpers-into-a-gem/5795563#5795563对于这项任务来说是多余的。你可以只创建一个Railtie http://edgeapi.rubyonrails.org/classes/Rails/Railtie.html它在初始化时将您的助手包含到 ActionView::Base 中。

# lib/my_gem/view_helpers.rb
module MyGem
  module ViewHelpers
    def pre(text)
      content_tag :pre, text
    end

    def another_helper
      # super secret stuff
    end
  end
end

# lib/my_gem/railtie.rb
require 'my_gem/view_helpers'
module MyGem
  class Railtie < Rails::Railtie
    initializer "my_gem.view_helpers" do
      ActiveSupport.on_load(:action_view) { include MyGem::ViewHelpers }
    end
  end
end

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

如何将 Rails 视图助手提取到 gem 中? 的相关文章

随机推荐

  • 是否可以在 awk 中将项目附加到数组而不指定索引?

    我意识到 awk 有关联数组 但我想知道是否有一个与此等效的 awk http php net manual en function array push php http php net manual en function array
  • IE11 是否完全支持 css 3d 转换(preserve-3d)

    我正在制作一个 css 3d 转换网络应用程序 如果可能的话 我希望支持 IE11 我知道IE10不支持preserve 3d的值transform stylecss 属性 但我不确定 IE11 我读过一些内容说 IE11 应该支持它 但我
  • 在 Windows 上使用 Python 虚拟环境时有哪些陷阱和解决方法?

    简短的介绍这个问题并不是要问是否需要使用虚拟环境 而是当使用 Ian Bicking 的虚拟环境 http www virtualenv org在 Windows 中管理环境的最佳方法是什么 如果有 如果您有多个想法 请多次回答 以便选出最
  • Angucomplete-alt:远程 API 处理程序未按预期工作

    我正在使用 angucomplete alt https github com ghiden angucomplete alt https github com ghiden angucomplete alt 在 AngularJS 项目中
  • 如何暂停一个线程?

    我想画点东西 因为 GUI 冻结了 所以我想在线程中绘制 但有时我想暂停绘图 几分钟 Delphi 的文档说 Suspend resume 已经过时 但没有说明哪些函数取代了它们 暂停和恢复已被弃用 Sleep http docwiki e
  • 海龟模块中的 onkeypress() 函数问题

    每当我尝试运行代码并按键盘上的 w s 向上 或 向下 键时 对象都不会移动 onkeypress 功能不起作用 我尝试将其替换为onkey 功能 但无济于事 下面是我的代码 import turtle wn turtle Screen w
  • Material-ui:图标的轮廓版本

    我在我的 React Web 应用程序中使用material ui 我需要组件中的图标 操作 描述 但在outline版本 根据文档 为了方便起见 提供了全套 google Material 图标 在 Material UI 中作为预构建的
  • 从 VBScript 读取 DLL(或 VB6)文件

    我正在尝试使用 VBScript 访问 VBA 文件 或 DLL 中的函数 我有点力不从心 而且我通常不使用这两种语言 所以我会解释一下情况 以防有更好的解决方案 我有一个仪器 它有一个类似 VBScript 的内部窗口 它具有 VBScr
  • Java Swing KeyStrokes:如何使 CTRL 修饰符起作用

    In the following program why does hitting the a key print hello world while hitting CTRL a doesn t import java awt event
  • Jquery 隔离

    我的公司有一个 Web 应用程序 其中包含纯 JavaScript 它以自己的方式使用 美元符号 如下所示 function e return document getElementById e 问题是当我将 jquery 嵌入到页面时发生
  • 如何限制受保护方法只能访问子类

    我们如何限制对任何受保护方法的访问仅限于任何包中的子类 而不是同一包中的类 如果任何类不是子类并且位于同一包中 它也必须抛出异常 例如 受保护的方法 编辑 有什么方法可以检查调用类名实例 然后我们可以使用进行验证实例化 这不可能 您可以选择
  • 依赖注入容器?它有什么作用?

    我一直在阅读有关 DI 的内容 它似乎是一个足够简单的概念 我没有得到的是容器 假设我想创建自己的容器 使用像 检测 这样的动词 我不明白容器如何 检测 创建了新的依赖对象并知道注入它的依赖项 对我来说 这个容器就像是一个光荣的工厂 谁能解
  • Azure静态Web应用程序环境变量

    我正在尝试通过 Azure Static Web 应用程序发布 Gatsbyjs 我有一个插件 gatsby source contentful 我需要传递如下变量 resolve gatsby source contentful opti
  • 如何调试 vscode 扩展的 WebView javascript

    我正在构建 vscode 扩展 但无法在 WebView 中的 Javascript 中设置断点 即使 WebView 是一个单独的进程 有没有办法调试 Javascript 具体来说 我正在尝试合并 Telerik TreeView Tr
  • OpenCV 3.4.3 中对“cv::String::deallocate()”错误的未定义引用[重复]

    这个问题在这里已经有答案了 我最近安装了 OpenCV 3 4 3 但 OpenCV 中的一些库没有运行 这是我的示例代码 include
  • 将 Youtube Gdata json 解析为 ListView

    我一直在尝试在 Android 中找到 解析 Youtube Gdata JSON 的工作示例来填充列表视图 我一直在阅读这个问题 https stackoverflow com questions 9555511 android pars
  • RxJava 并行获取 Observables

    我需要一些帮助来在 RxJava 中实现并行异步调用 我选择了一个简单的用例 其中第一个调用获取 而不是搜索 要显示的产品列表 平铺 随后的调用将获取 A 评论和 B 产品图像 经过几次尝试我到达了这个地方 1 Observable
  • 找不到实体框架 4 注释

    我正在尝试使用注释将 POCO 类映射到我的数据库表 我需要使用Table注释来指定我的表的名称 但我无法解析Table注解 注 我导入了System Data Entity命名空间 但它不起作用 我必须导入哪个命名空间才能使用 EF 注释
  • Flutter Admob AppID 使用 Android 还是 iOS?

    当我们在admob控制台中制作AdMob应用程序时 我们可以选择Android或iOS应用程序 这意味着有 2 个不同的 ID 我们应该在 Flutter AdMob 插件中使用哪一个 FirebaseAdMob instance init
  • 如何将 Rails 视图助手提取到 gem 中?

    我有一组经常使用的 Rails 视图助手 并且想将它们打包成一个 gem 这样我就可以在 Gemfile 中添加一行 并从我的视图中访问这些助手 我在使用 Bundler 和 Jeweler 之前已经创建了 gem 但是 我不太清楚如何在