草庐IT

交互模块

全部标签

Ruby 基准测试模块 : meanings of "user", "system"和 "real"?

试验Ruby的基准模块...>>Benchmark.bm(7){|b|b.report('Report:'){s='';10000.times{s+='a'}}}usersystemtotalrealReport:0.1500000.0100000.160000(0.156361)“用户”、“系统”、“真实”的含义是什么? 最佳答案 这些时间与Unixtime命令或其他典型基准测试工具报告的时间相同:user:执行用户空间代码(即:您的代码)所花费的时间,system:执行内核代码所花费的时间和真实:执行代码所花费的“真实”时间(即

ruby - 如何将一个模块包含到另一个模块中(将 AASM 代码和自定义状态重构到模块中)

我正在尝试重构一个super模型,该模型具有相当多行与状态和转换相关的ActsAsStateMachine代码,我希望将其重构为模块调用CallStates。#inlib/CallStates.rbmoduleCallStatesmoduleClassMethodsaasm_column:statusaasm_state:state1aasm_state:state2aasm_state:state3enddefself.included(base)base.send(:include,AASM)base.extend(ClassMethods)endend然后在模型中includeC

ruby - 如何访问 Ruby 模块方法

我有一个用于常量的Ruby模块。它有一个变量列表和一个应用格式的方法。我似乎无法访问此模块中的方法。知道为什么吗? 最佳答案 如果您include模块,该方法成为实例方法,但如果您扩展模块,则它成为类方法.moduleConstdefformatputs'Done!'endendclassCarincludeConstendCar.new.format#Done!Car.format#NoMethodError:undefinedmethodformatforCar:ClassclassBusextendConstendBus.fo

ruby - 有没有办法用 Rspec stub 包含模块的方法?

我有一个模块包含在另一个模块中,它们都实现了相同的方法。我想stub包含模块的方法,如下所示:moduleMdeffoo:MendendmoduleAclass第一个测试通过,但第二个输出:Failure/Error:expect(A.foo).toeq:barexpected::bargot::M为什么stub在这种情况下不起作用?有没有不同的方法来实现这一目标?谢谢!------------------------------------更新----------------------------------谢谢!使用allow_any_instance_of(M)解决了这个问题。

ruby - 码和文档中类/模块的链接

我目前正在从rdoc切换到yard以获取我的ruby​​软件文档。在我的文档中,我经常从评论中引用一些类/模块,例如:##==Providesvariousutilityfeatures####==Features####Logging:loggingisprovidedbytheMysoft::Mypackage::Utility::Loggerclass##Rdoc正确地创建了指向Mysoft::Mypackage::Utility::Logger类文档页面的链接,而yard忽略了标记并将类名视为简单字符串。我知道yard有@see标签,但是这会在文档中创建一个单独的“另见”部分,

ruby-on-rails - Ruby(和 Rails)嵌套模块语法

我想知道下面两个模块有什么区别#FirstExamplemoduleParentmoduleChildendend和#SecondExamplemoduleParent::Childend使用第二种方法,似乎必须预先定义父模块,否则会出现“未初始化常量”错误鉴于此,定义此类模块的首选方法是什么,然后根据语法和文件结构(即文件夹等)添加嵌套子项。非常感谢引用Rails方式。这两个示例的所有意图和目的是否相同? 最佳答案 在第一个示例中,它定义了Parent模块,然后是Child模块。正如您自己所说,第二个示例必须预先定义Parent模

ruby-on-rails - Rails 将验证放在模块混合中?

一些验证在我的模型中是重复的:validates:name,:length=>{:minimum=>2},:presence=>true,:uniqueness=>truevalidates:name_seo,:length=>{:minimum=>2},:presence=>true,:uniqueness=>true我如何将其放入混音中?如果我只是将它们放入mixin中,我会收到此错误app/models/validations.rb:5:undefinedmethod`validates'forValidations:Module(NoMethodError)

Ruby 模块 - 包含 do end block

有一个模块MyModule:moduleMyModuleextendActiveSupport::Concerndeffirst_methodenddefsecond_methodendincludeddosecond_class_methodendmoduleClassMethodsdeffirst_class_methodenddefsecond_class_methodendendend当某些类包含这个模块时,它将有2个方法公开为实例方法(first_method和second_method)和2个类方法(first_class_method和second_class_metho

ruby - 在另一个模块中扩展 Ruby 模块,包括模块方法

每当我尝试扩展ruby​​模块时,我都会丢失模块方法。include和extend都不会这样做。考虑片段:moduleAdefself.say_hiputs"hi"endendmoduleBincludeAendB.say_hi#undefined_method无论B包含还是扩展A,都不会定义say_hi。有什么办法可以完成这样的事情吗? 最佳答案 如果您是moduleA的作者并且经常需要它,您可以像这样重新编写A:moduleAmoduleClassMethodsdefsay_hiputs"hi"endendextendClass

ruby - 仅在模块中列出方法?

我想知道如何列出模块中的所有方法,但不包括继承的方法。例如。moduleSoftwaredefexitputs"exited"endendputsSoftware.methods不仅会列出退出,还会列出所有继承的方法。是否可以只列出导出?谢谢 最佳答案 实际上Software.methods不会列出exit。Software.instance_methods将列出exit以及任何继承的方法(在这种情况下什么都不是,因为模块不继承任何方法,除非您包含另一个模块)。Software.instance_methods(false)将仅列出