草庐IT

private-methods

全部标签

ruby-on-rails - rails 3 : alias_method_chain still used?

我刚刚阅读有关Rails3的Gems/Plugin开发并遇到了thispost这表示不再使用alias_method_chain。我可以看到该方法仍然存在于activesupport-3.0.0/lib/active_support/core_ext/module/aliasing.rb中。我还应该在Rails3中使用alias_method_chain吗?是this是否仍然反射(reflect)了Rails3中想要修改ActiveRecord的gem/插件的最佳实践? 最佳答案 不,它已被巧妙地使用模块中的方法覆盖和super关键

ruby - 如何在 Ruby 中使实例变量私有(private)化?

有什么方法可以在ruby​​中使实例变量“私有(private)”(C++或Java定义)?换句话说,我希望以下代码导致错误。classBasedefinitialize()@x=10endendclassDerived 最佳答案 像Ruby中的大多数东西一样,实例变量并不是真正的“私有(private)”,任何人都可以通过d.instance_variable_get:@x访问。不过,与Java/C++不同,Ruby中的实例变量始终是私有(private)的。它们从来都不像方法那样是公共(public)API的一部分,因为它们只能

ruby - "private"、 "public"和 "protected methods"之间有什么区别?

我正在学习Ruby,但已经到了让我感到困惑的地步。我正在使用的书上讲的是private、public和protectedmethods,但我还是有点糊涂。它们之间有什么区别? 最佳答案 公共(public)-可以从任何地方调用Private-不能在类作用域外调用该方法。对象只能给自己发送消息例如:面包师有bake方法是公开的,但break_eggs是私有(private)的protected-只要默认对象self是与您正在调用其方法的对象相同的类的实例,您就可以调用对象的protected方法例如:使用n保护方法,c1可以要求c2执

ruby-on-rails - 如何解决弃用警告 "Method to_hash is deprecated and will be removed in Rails 5.1"

我正在尝试更新到Rails5,我收到以下弃用警告:DEPRECATIONWARNING:Methodto_hashisdeprecatedandwillberemovedinRails5.1,asActionController::Parametersnolongerinheritsfromhash.Usingthisdeprecatedbehaviorexposespotentialsecurityproblems.Ifyoucontinuetousethismethodyoumaybecreatingasecurityvulnerabilityinyourappthatcanbee

ruby - 如何在 Ruby 中创建私有(private)类常量

在Ruby中如何创建私有(private)类常量?(即在类(class)内可见但在类外不可见的)classPersonSECRET='xxx'#Howtomakeclassprivate??defshow_secretputs"Secret:#{SECRET}"endendPerson.new.show_secretputsPerson::SECRET#I'dlikethistofail 最佳答案 从ruby​​1.9.3开始,您有了Module#private_constant方法,这似乎正是您想要的:classPersonSEC

ruby - 如何设置方法测试中使用的私有(private)实例变量?

给定一个包含几个实例变量和一些方法的类。一些实例变量设置为可通过attr_reader和attr_accessor访问。因此其他的都是私有(private)的。一些私有(private)实例变量在一个实例方法中设置,并在另一个方法中读取/使用。我使用RSpec进行测试。由于我对Ruby还是个新手,并且希望把所有事情都做好,所以我将我的测试定义为相当细粒度的。因此,我为每个实例方法获得了一个describeblock,它们本身被划分为context和it的子集。一般环境先决条件用before定义。但是,当测试其中一种使用但未设置私有(private)变量的方法时,我需要调用另一种方法,即

ruby - 在 Ruby (rspec) 中测试私有(private)方法

这个问题在这里已经有了答案:Howtospecaprivatemethod(4个答案)关闭9年前。是的,我知道,测试私有(private)方法不是一个好主意(而且我阅读此线程-http://www.ruby-forum.com/topic/197346-还有一些其他)但是我怎样才能测试下面的代码呢?我使用xmpp4r。在我的公共(public)方法#listen中,我开始接收jabber像这样的消息:deflisten@client.add_message_callbackdo|m|do_things_with_message(m)endendprivatedefdo_things_w

ruby - 了解 Ruby 中的私有(private)方法

classExampleprivatedefexample_testputs'Hello'endende=Example.newe.example_test这当然行不通,因为我们指定了显式接收者-Example(e)的实例,这违反了“私有(private)规则”。但我不明白,为什么不能在Ruby中这样做:classFoodefpublic_mself.private_m#public_m方法定义中的当前对象(即self)是Foo的实例。那么为什么不允许呢?要解决这个问题,我必须将self.private_m更改为private_m。但为什么这不同,self不是public_m中的Foo

ruby - Ruby 中的 method_missing 陷阱

在Ruby中定义method_missing方法有什么需要注意的地方吗?我想知道是否存在一些不太明显的来自继承、异常抛出、性能或其他任何方面的交互。 最佳答案 一个有点明显的:总是重新定义respond_to?如果你重新定义method_missing。如果method_missing(:sym)有效,respond_to?(:sym)应该总是返回true。许多图书馆都依赖于此。稍后:一个例子:#WrapaFoo;don'texposetheinternalguts.#Passanymethodthatstartswith'a'on

ruby - 如何在 Ruby 中使类构造函数私有(private)化?

classAprivatedefinitializeputs"wtf?"endendA.new#stillworksandcallsinitialize和classAprivatedefself.newsuper.newendend完全没有效果那么正确的做法是什么?我想将new设为私有(private)并通过工厂方法调用它。 最佳答案 试试这个:classAprivate_class_method:newendMoreonAPIDock 关于ruby-如何在Ruby中使类构造函数私有(p