草庐IT

put_metric_data-instance_method

全部标签

ruby - 对于未定义的实例变量,Ruby 是否有 method_missing 等价物?

当我调用一个不存在的方法时,method_missing会告诉我该方法的名称。当我尝试访问一个尚未设置的变量时,该值只是nil。我正在尝试动态拦截对nil实例变量的访问,并根据所访问的变量的名称返回一个值。最接近的等价物是PHP的__get.Ruby中是否有任何等效功能? 最佳答案 我不相信这在Ruby中是可能的。推荐的方法是在模板中使用“user”方法而不是“@user”实例变量。这与您在外部处理Ruby对象的方式一致(''obj.user''是一种引用''@user''的方法,但实际上不是''@user''本身)。如果您需要任何

ruby-on-rails - Rails Engines : When to put code in app, 何时在 lib 中,何时在 vendor 文件夹中?

我正在开发一个Rails引擎,所以我对现有引擎进行了一些研究。我注意到他们中的许多人在app中都有文件,但也在lib和vendor中。我很清楚,我应该将任何应该由主机应用程序替换的代码放入app文件夹中(例如,当有一个模型app/user.rb,主机应用程序可以很容易地拥有自己的app/user.rb文件并使用这个而不是引擎的)。但我不确定,何时必须将内容放入lib,何时放入vendor?我想,在vendor中,我应该只放置我想在我的项目中使用的来自其他开发人员或项目的“外部”代码,而在lib中,我放置我的拥有我在项目中实际使用的其他库。但是,例如,为什么WiceGrid将内容放入其w

ruby - rake 任务有 "method_missing"吗?

如果我的Rakefile没有找到具有特定名称的任务,我希望rake根据特定规则使用该名称创建一个新任务,如果一个文件缺少任务名称存在。但如果没有,我想回退到默认值(“不知道如何构建任务'foo'!”)。简而言之,Rake是否有method_missing? 最佳答案 我没试过,但快速搜索显示this.Ifyoudefinearulewithanemptystring,youcancatchanytaskthathasn’tbeendefinedelsewhere.Thismakesiteasytodynamicallycreater

ruby-on-rails - rails : dynamically define class method based on parent class name within module/concern

我想根据包含此Mixin的类名在Mixin中动态生成一个类方法。这是我当前的代码:moduleMyModuleextendActiveSupport::Concern#defsome_methods#...#endmoduleClassMethods#HereiswhereI'mstuck...define_method"#{self.name.downcase}_status"do#dosomething...endendendclassMyClass但这给了我以下方法名称:MyClass.mymodule::classmethods_status在方法定义中获取基类名称是可行的(s

ruby-on-rails - Rails 4 关注 : Give class instance variables to model

考虑到Rails,我可以通过包含它们来通过模块提供我的模型类方法和实例方法。不过,我发现没有任何博客条目或线程提到如何在我的模型中包含变量。具体来说,我想给我的包含模型一个类实例变量@question,但我不知道将声明放在模块中的什么地方,所以它会被应用。如果模型本身声明了该变量,我还希望重写类实例变量。ActiveSupport::Concern模块真的关心变量吗?moduleContentAttributeextendActiveSupport::Concerndeffoop"hi"endmoduleClassMethods#@question="Iamagenericquesti

ruby "instance variable not initialized"警告

在用ruby​​编写一些“学习语言”代码时,作为linkedList实现的一部分,我遇到了这个警告:在“添加”方法中,如果头部不存在则创建它,即defadd(value)new_node=LinkedListNode.new(value)if!@head@head=new_nodeelseself.find{|node|node.next==nil}.next=new_nodeendend然后我收到警告.../linked_list.rb:13:warning:instancevariable@headnotinitialized如何摆脱这个警告?这样做的惯用方法是什么?

子类中的 Ruby : Invoke overridden method of parent class,

假设我有从A派生的B类是否可以像这样调用A的重写方法?classAdefmethod1enddefmethod2endendclassB#与HowdoIcallanoverriddenparentclassmethodfromachildclass?不完全相同,但我们似乎想做同样的事情。 最佳答案 我在这里假设B应该继承自A,而您只是在示例代码中输入了一个错字。如果不是这样,就没有办法做你想做的事情。否则,您可以通过将A的method2实例方法绑定(bind)到您当前的B对象并调用它来使用反射来做您想做的事这个:classAdefm

ruby - 如何让 Ruby 'puts' 将数据写入文件?

我有以下代码,我想用它来pingIP地址和写入文件。一切正常,只是我无法将其写入文件。server=%w'192.168.150.254192.168.150.251192.168.120.1192.168.120.2'File.open('/test/test2.out','w')do|s|server.eachdo|p|r=`ping-a-n1#{p}`putsrendend 最佳答案 将putsr更改为s.putsr。您正在写入stdout而不是s。(参见Kernel#puts和IO#puts)

ruby-on-rails - 动态类加载 : Is there a "method_missing" for classes in Ruby?

在我正在处理的Rails应用程序中,我有一个与单表继承模型“Node”相关的模型“Type”:Node的任何可能的子类都被定义为类型表中的一个Type。现在可以在初始化程序中加载所有类,但我想仅在需要时加载子类。我能想到的最佳解决方案是回退到一个未初始化的常量上,该常量将检查该常量是否可以代表应用程序中的一个类,类似于method_missing所做的事情。我想要一些关于如何以及在何处定义此逻辑的建议,或者是否有更好的解决方案。 最佳答案 我不知道这是否是新的,但我认为它值得添加。可以将缺少的方法用作类方法classExampled

ruby - 是 &method( :method_name) idiom bad for performance in Ruby?

我最近遇到了&method(:method_name)语法。(这使用Object#method方法-RDoclink)例如,[5,7,8,1].each(&method(:puts))相当于[5,7,8,1].each{|number|putsnumber}在Ruby的各种实现中,与前者相比,后者是否存在性能损失?如果是,实现者是否正在努力提高其性能? 最佳答案 是的,这似乎对性能不利。deftimestart=Time.nowyield"%.6f"%(Time.now-start)enddefdo_nothing(arg)endR