You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从.gemspec中获取私有Gem名称并在视图中输出

从Gemspec获取Gem名称并在视图中使用
  • 步骤1:在Gem代码中加载Gemspec并暴露名称
    你可以在Gem的初始化文件或引擎类中读取gemspec,将名称存为可访问的常量或方法:

    • 若为普通Ruby Gem,在lib/your_gem.rb中添加:
      spec = Gem::Specification.load(File.expand_path("../your_gem.gemspec", __FILE__))
      GEM_NAME = spec.name
      
    • 若为Rails引擎,在引擎类中添加方法:
      module YourGem
        class Engine < Rails::Engine
          isolate_namespace YourGem
      
          def self.gem_name
            @gem_name ||= Gem::Specification.load(File.expand_path("../../your_gem.gemspec", __FILE__)).name
          end
        end
      end
      
  • 步骤2:在视图布局中调用名称
    直接在ERB布局的body标签中使用:

    • 用常量的方式:
      <body class="<%= GEM_NAME %>">
        <!-- 布局内容 -->
      </body>
      
    • 用引擎方法的方式:
      <body class="<%= YourGem::Engine.gem_name %>">
        <!-- 布局内容 -->
      </body>
      
  • 可选:通过Helper简化调用
    在Gem的helper文件(如app/helpers/your_gem/application_helper.rb)中添加:

    module YourGem::ApplicationHelper
      def gem_name
        YourGem::Engine.gem_name
      end
    end
    

    之后视图里可直接用:

    <body class="<%= gem_name %>">
    </body>
    

注意:调整File.expand_path的路径参数,确保能正确定位到你的gemspec文件,路径需匹配Gem的目录结构。

内容的提问来源于stack exchange,提问作者rctneil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 02:01:28