只加载 Ruby 中正在使用的类?

2023-12-24

如果我加载x.rb, 然后加载该文件中的所有类 https://stackoverflow.com/questions/10001106/does-requiring-a-gem-load-everything-including-things-i-dont-use/10001223#10001223。是否可以检查并查看正在使用哪些类并仅加载这些类?

假设x.rb同时包含Hello和Goodbye类,而我的程序只使用Hello类,是否可以只加载Hello类?

对检查文档的脚本感到满意,并输出一个仅包含 Hello 类和使用它的代码的 .rb...如果不存在的话,这将是一个有趣的 github 项目,但我认为它超出了我的技能范围。


当类在它们自己的单独文件中定义时,您could使用autoload http://www.ruby-doc.org/core-1.9.2/Kernel.html#method-i-autoload12 方法:

autoload :Hello,   'x/hello'
autoload :Goodbye, 'x/goodbye'

当你写的时候Hello,您实际上正在访问Hello持续的。autoload uses const_missing如果未定义常量,则自动需要文件。

请注意,我们在这里仍在处理文件。的内容x/hello.rb将被简单地阅读和评估。该代码可以运行任何操作。它可以require其他文件。它可以定义一百万个其他类。

那是因为源代码实际上只是文本。对于解释语言尤其如此。例如,在Java中,每个“编译单元”通常只能声明一个公共类型 http://docs.oracle.com/javase/specs/jls/se7/html/jls-7.html#jls-7.6。在 Ruby 中,没有这样的东西。


¹ 马茨强烈反对这种做法 http://bugs.ruby-lang.org/issues/5653

² Ruby Insider 文章autoload http://www.rubyinside.com/ruby-techniques-revealed-autoload-1652.html

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

只加载 Ruby 中正在使用的类? 的相关文章

  • Rails 4:资产未在生产中加载

    我正在尝试将我的应用程序投入生产 但图像和 CSS 资源路径不起作用 这是我目前正在做的事情 图像资源位于 app assets images image jpg 样式表位于 app assets stylesheets style css
  • Android/Java 创建辅助类来创建图表

    Goal 创建用于图形生成的辅助类 背景 我有 3 个片段 每个片段收集一些传感器数据 加速度计 陀螺仪 旋转 并使用 GraphView 绘制图表 以下是其中一个片段的代码 该代码当前工作正常 public class Gyroscope
  • Swift:协议、结构、类

    我开始学习 Swift 语言 但在理解协议 结构和类方面遇到了困难 我来自 Android 方面的编程 所以我相信 Swift 协议基本上是 Java 接口 其中每一个的正确用例是什么 这些类比并不 完全 正确 但这就是我所理解的要点 是的
  • 使用 VCR 过滤敏感数据

    我正在使用 VCR gem 记录 http 交互并在将来重播它们 我想过滤掉 uri 请求中的实际密码值 以下是 uri 的示例 http services somesite com Services asmx Cabins Usernam
  • “require(...)”是常见的 JavaScript 模式还是库函数?

    我通常发现这是 node js 脚本 模块以及 phantomJS casperJS 等中的第一行 我很好奇 这是否是服务器端 javascript SSJS 的常见模式 类似于 include在 C C 中或import在 Java 中
  • Rails/Nginx 中的超时——最佳实践

    我正在开发一个应该在 Nginx 服务器上运行的 Rails 应用程序 根据输入 应用程序可能需要很长时间来处理请求 或者在出现错误时挂起 因此我想防止进程永远运行 除了确保客户端收到超时信号的 Nginx 配置之外 我想我可能仍然需要确保
  • Rails:named_scope、lambda 和块

    我认为以下两个是等效的 named scope admin lambda company id conditions gt company id company id named scope admin lambda do company
  • 如何在 Linux 中编写文本模式 GUI? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当我编写脚本 程序时 我经常想弹出一个简单的文本 gui 来提示输入 我该怎么做 例如 来自 Shel
  • Ruby 中的 DateTime.parse() 是否依赖于语言环境?

    我想知道以下示例的输出 解析时01 03 它会被解决为Mar 1st or Jan 3rd Ruby 不依赖于语言环境 因为红宝石是一个服务器端语言而不是客户端像 JavaScript 一样的语言 Ruby 使用系统时钟yourWeb 应用
  • 为什么我无法访问打字稿类的构造函数中的抽象属性

    abstract class Route abstract readonly name string protected abstract pattern string public constructor Do something wit
  • 什么是适合 Rails 3 的测试框架?

    去年我一直在使用 Ruby On Rails 但是 无法进行单元测试 现在我必须编写单元测试代码 哪个测试框架好 为什么 有这方面的好的教程吗 我的系统配置 Ruby 1 9 2 Rails 3 Ubuntu 10 第一个技巧是 尝试升级到
  • 正则表达式的 o 修饰符是什么意思?

    Ruby 正则表达式有一些选项 例如i x m o i例如 意味着忽略大小写 什么是o选项是什么意思 在ri Regexp 它说o意味着执行 仅插值一次 但是当我这样做时 a one b a a two b不改变 它保持 one 我缺少什么
  • 为 RoR 中的每个用户创建新的 URL 路径

    如何在 Ruby on Rails 中实时创建新的 URL 路径 例如 我希望我的用户拥有 name XXX com 或 XXX com name 仅供参考 我在 Heroku 上托管代码 看看 subdomain fu 插件 https
  • 使用 ruby​​ 调整动画 GIF 图像的大小?

    我正在尝试将 GIF 图像调整为不同的尺寸 我在 ruby 中使用 RMagick 库 但对于某些 gif 图像 即使我缩小 GIF 的大小 文件大小似乎也会增加 我正在以相同的纵横比调整图像图像的大小 这是我的代码 require rma
  • Ruby 中的 url_encode

    I read 的文档url encode http rdoc info stdlib erb 1 9 3 ERB Util 3Aurl encode 是否有一个表可以准确地告诉我哪个字符被编码为什么 使用url encode ERB s u
  • ruby on Rails:音频/mp3 内容标题下载

    如何在 ruby rails 中设置下载标题 在 php 中 我为 mp3 下载设置标头 如下所示 header Content Transfer Encoding binary header Content type audio mp3
  • 嵌套 has_one 关联的强参数

    我似乎遗漏了一些明显的东西 但我无法允许嵌套的属性has one协会 控制器 def create crossword Crossword new crossword params if crossword save render show
  • 如何使用 ruby​​ 和命令行工具在 mavericks 中正确安装 cocoapod?

    这是我的设置 小牛队10 9 1 Xcode 5 0 2 哪个红宝石返回这个 Users quique123 rvm rubies ruby 1 9 3 p194 bin ruby 但 dvm install ruby 返回 Already
  • Ruby ActiveRecord 和 sql 元组支持

    ActiveRecord 是否支持 where 子句中的元组 假设底层数据库支持 结果 where 子句看起来像这样 where name address in John 123 Main St I tried Person where n
  • 在 Rails 项目中保存自定义异常定义的常规位置是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 当创建自己的自定义异常时 例如 class ThingExploded lt StandardError end class ThingIsMi

随机推荐

  • Spring Boot 和多模块 Maven 项目

    我正在努力正确设置多模块 Spring Boot Maven 项目 有没有我可以参考的示例项目 目前我的项目结构如下 数据模块 基本上是我的数据层 包含我的 POJO 和数据库存储库接口 PagingAndSortingRepository
  • 如何解决此异常“无法在类中找到属性‘ProductCode’的设置器...”

    我收到以下异常 Could not find a setter for property ProductCode in class OrderItem class 属性 ProductCode 是我的表键之一 看看类中的属性声明如何 pub
  • mySQL 传递闭包表

    我在 SQL Server 中使用了一些代码 从另一个仅具有直接父 子关系的表生成闭包表 我可以对此运行非常简单的查询来确定沿袭 现在我需要在 mySQL 中完成所有这些操作 但是我在递归查询生成闭包表时遇到了问题 我原来的 SQL Ser
  • 如何获取主键来执行更新语句[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在尝试使用 Java JDBC 更新我的表 但我不知道如何使用准备好的语句调用我的主键 我尝试做一个USER ID我的数据库列的对象 但
  • Wix 在重大升级期间不会删除以前版本的burn exe

    我使用burn bootstrapper 创建了一个wix exe 当我尝试对其进行重大升级时 会安装新版本 新升级中缺少的功能也将从现有文件夹结构中删除 但在 添加或删除程序 中我仍然可以找到这两个安装 我已在 Bootstrapper
  • Cassandra 中按时间戳排序最新记录

    我正在尝试显示传感器列表中的最新值 该列表还应该可以按时间戳排序 我尝试了两种不同的方法 我在主键中包含了传感器的更新时间 CREATE TABLE sensors customerid int sensorid int changedat
  • 每次在 Spring 上测试后重置数据库而不使用 DirtiesContext

    我想知道是否有某种方法可以在每次集成测试后重置数据库without DirtiesContext DirtiesContext classMode DirtiesContext ClassMode AFTER EACH TEST METHO
  • 模糊事件停止点击事件

    示例代码 http jsfiddle net slolife PnmxM http jsfiddle net slolife PnmxM 我问这个问题虽然有很多类似的问题 但我觉得它们不一样 我有一个文本框 当它模糊时 应该执行某些操作 我
  • 数据注释标签放在哪里?

    我正在使用 pro asp net mvc 2 0 框架 似乎他将数据注释标记放在也生成 linq to sql 的类上 Table Name Products public class Product HiddenInput Displa
  • /tmp/hive 上的 Powershell chmod 用于 winutils 和 hadoop/spark

    我目前正在尝试将在测试堆栈上设置 Spark Hadoop 的过程合并到我们的 powershell 脚本中 这是一个 Windows 环境 有些地方会出现问题 但这是最糟糕的 当我手动安装时 我可以运行 HADOOP HOME bin w
  • iPhone:如何下载完整的网站?

    您建议我使用哪种方法将网站 一个包含所有包含图像的 HTML 网站 下载到 iPhone 问题是如何抓取所有这些微小的部分 Javascript 图像 CSS 并将它们保存在本地 这与具体实现无关 我知道如何使用 NSURLRequest
  • 使用 Google Apps 脚本记录

    我有两个关于使用应用程序脚本进行日志记录的问题 1 我有两个 gs 文件 在同一个项目中 一个 F1 正在通过以下方式呼叫另一个 F2 urlfetch POST 请求 这Logger log在 F1 中工作得很好 但在 F2 中却不行 也
  • 为什么链接描述文件有多个节命令?

    我一直在读ld 的部分文档 https access redhat com documentation en US Red Hat Enterprise Linux 4 html Using ld the GNU Linker sectio
  • 如何使用指定类路径的命令行从 jar 运行类

    我正在尝试从 JAR 运行一个类 这个类不是这个 jar 中唯一的主类 此外 它还需要许多其他 jar 文件 我将它们保存在与此 Jar 相同的目录中 我尝试过的命令如下 mydir是我所有jar所在的目录 使用Windows平台 mysq
  • 有没有办法在 Windows 上的 Ubuntu 上的 Bash 中使用 Notepad++ 打开文件?

    我使用的是 Windows 10 但我在 Windows 上的 Ubuntu WSL 上使用 Bash 来熟悉 Linux 命令行 我正在尝试充分利用它的功能 并且认为能够打开 比方说 会很棒 index html从 Notepad 中的
  • 如何使用node.js编译lesscss

    Hi 我已经使用以下代码完成了我的网站编码lesscss客户端现在想要编译less所以我已经下载了node js 我的网站在本地主机上运行 我想首先知道 我必须在哪里安装node js 接下来我要做什么 命令行工具 命令行等 如果有人可以帮
  • 我将一些值发送到另一个网址以及关于此的信息

    我使用 spring httpClient 将一些值发送到其他网址 关于这个问题 据我所知 如果我发送name mister age 30 values 收到的页面得到的值不是 http 状态值 对吧 HTTP 状态值用于发送页面而不是接收
  • 如何在 Spring Boot 应用程序中更改服务器?

    My project requirement is to use another server than tomcat How can we change embedded server from spring boot applicati
  • 重新加载/刷新 iframe 的最佳方法是什么?

    我想重新加载使用 JavaScript 到目前为止我发现的最好的方法是设置 iframesrc归因于自身 但这不是很干净 有任何想法吗 document getElementById some frame id contentWindow
  • 只加载 Ruby 中正在使用的类?

    如果我加载x rb 然后加载该文件中的所有类 https stackoverflow com questions 10001106 does requiring a gem load everything including things