有没有办法强制require第二次调用一个文件?我正在编写一个位于Ruby路径中的库。我正在编辑文件,同时在IRB中对其进行简单测试。每次我对文件进行更改时,我都想在不结束IRBsession的情况下重新加载它。使用load需要每次输入文件的完整路径,每次重新启动IRB都需要我输入简单测试所需的所有其他变量设置。我只想要像require这样的东西,但它允许第二次加载。有简单的方法吗? 最佳答案 load不需要(嗯)完整路径。它需要一个带有扩展名的完整文件名。pload'date.rb'#=>truepload'date.rb'#=>
加载器.rbputs'>Thisisthesecondfile.'加载演示.rbputs'Thisisthefirst(master)programfile.'load'loadee.rb'puts'Andbackagaintothefirstfile.'当我运行"rubyloaddemo.rb"时,效果很好。这两个文件都在同一个目录中,这就是我运行的目录。但是,如果我将负载更改为要求,无论有无扩展名,我都会得到::29:in`require':nosuchfiletoload--loadee.rb(LoadError)from:29:in`require'fromloaddemo.r
我在Rails或Ruby中有一个更概念性的问题:是否最好在需要它的方法之前调用require,在类的开头或Rails启动时在初始化程序中的某个地方对我的require进行分组?从性能的角度来看,这重要吗?从可读性的角度来看?如果我使用Rails3,会有什么不同吗?谢谢! 最佳答案 如果您关心性能,那么您应该在需要它们的上下文中要求它们,这样如果您的那部分代码没有被执行,库就不会被加载。任何对require的后续调用都没有效果,因为该文件已经加载。这最终看起来像这样:if(user.using_openid?)require'open
在我见过的几乎所有Sinatra示例中,不管它做了什么,它总是有以下两行:require'rubygems'require'bundler/setup'在大多数示例中,删除“bundler/setup”要求似乎没有破坏效果,所以我对何时何地需要包含它感到困惑。我讨厌在不知道确切原因的情况下使用东西,所以我希望有人能解释为什么我需要这两条线以及它们的作用? 最佳答案 它确保您正在加载Gemfile定义的gem。请在此处查看文档https://bundler.io/v1.12/bundler_setup.html
我只是想了解自己。我正在使用nokogirigem(用于解析HTML)。如果我能正确打开URL,我需要使用gem“open-uri”中的方法。但是当我将它包含在我的Gemfile中时(在Windows开发人员的机器上):gem'open-uri'-捆绑安装时出现找不到gem的错误。因此,如果我使用require'open-uri'-它可以正常工作。那么有人能解释一下这是怎么回事吗? 最佳答案 您正在使用bundler对于您的gem依赖项,您做对了,但是OpenUri是Ruby标准库的一部分。这就是为什么如果您想在代码中使用它,您仅需
我正在尝试从“require”中解救出来:没有这样的文件可以按顺序加载到ruby中提示用户指定-I标志,以防他忘记这样做。基本上代码如下所示:beginrequire'someFile.rb'rescueputs"someFile.rbwasnotfound,haveyou"puts"forgottentospecifythe-Iflag?"exitend我原以为rescue部分会在找不到someFile.rb的情况下接管执行,但我的假设是错误的。 最佳答案 没有参数的rescue只拯救StandardErrors。LoadEr
在Ruby中使用类文件时,您是将“requires”语句放在文件的顶部,还是放在类定义中? 最佳答案 从技术上讲,这并不重要。require只是一个普通的方法调用,它被调用的范围不会影响它的工作方式。放置的唯一区别在于它会在计算放置它的任何代码时执行。实际上,您应该将它们放在顶部,以便人们一眼就能看到文件的依赖项。这是它的传统位置。 关于ruby-Ruby'require'语句是在类定义内部还是外部?,我们在StackOverflow上找到一个类似的问题: h
requireFile.expand_path(...,__FILE__)是要求项目中其他文件的最佳方式吗? 最佳答案 在Ruby1.9.2中+require_relative可能是更正确的方法。出于安全原因,require已更改为不包含您的'.'目录。添加了require_relative,以便为相对于您的调用脚本路径的模块提供本地文件解决方案。您可以searchhereonStackOverflow,特别是在“Whatisrequire_relativeinRuby?”中,以及互联网和查找使用技巧以及why-formessage
在Ruby中,有人告诉我这样做require"some_file"Ruby会在某些地方寻找文件。我知道它会查找some_file.rb,但默认情况下它在哪里查找? 最佳答案 这取决于您的平台,以及Ruby的编译方式,因此没有“那个”答案。你可以通过运行找到:ruby-e'puts$:'不过,通常情况下,您拥有标准、站点和供应商Ruby库路径,包括每个路径下的架构、版本和通用目录。 关于ruby-"require"默认查找的路径是什么?,我们在StackOverflow上找到一个类似的
我理解Ruby中require、load和autoload之间的细微差别,但我的问题是,你怎么知道要加载哪一个利用?除了能够在匿名模块中“包装”load之外,require似乎是首选。但是autoload允许您延迟加载文件——这听起来很棒,但我不确定您实际上比require获得了什么一种方法优于另一种方法吗?是否存在一种方法脱颖而出的情况? 最佳答案 通常,您应该使用require。load每次都会重新加载代码,因此如果您从多个模块执行此操作,将会做很多额外的工作。autoload的惰性在理论上听起来不错,但许多Ruby模块会做一些