草庐IT

private_method

全部标签

ruby - Module.private_constant 有什么作用?有没有办法只列出私有(private)常量?

从Ruby1.9.3开始,我们可以创建私有(private)常量:moduleMclassC;endprivate_constant:Cend是否有关于此功能的良好文档?有没有办法只获取类似于调用constants的私有(private)常量的名称 最佳答案 在Ruby1.9.3之前,没有私有(private)常量这样的东西。不过,要获得所有常量的列表,您可以简单地使用constants。moduleModCONST="value"endMod.constants#=>[:CONST]从1.9.3开始,添加了private_cons

Ruby 2.4.1 Dir.children( dirname ) 为 Dir :Class"返回 "undefined method ` children'

我是Ruby的新手,正在尝试学习它。我使用的是最新的Ruby版本(2.4.1)和交互式RubyShell。我在Dir类中遇到过children方法。我试过这个例子fromthedocumentation:Dir.children("testdir")#=>["config.h","main.rb"]但它似乎不起作用,因为我收到以下消息:undefinedmethod`children'forDir:Class我错过了什么? 最佳答案 这似乎是某种文档困惑。Dir.children方法是在Feature#11302中引入的进入Ruby

ruby - undefined symbol : SSLv3_method - . ../openssl.so 与 Ruby 和 ArchLinux

ArchLinux最近的OpenSSL更新破坏了Ruby,因为后者依赖于前者支持的SSLv3。使用OpenSSL的Ruby代码会在它们终止并出现如下错误时揭示问题:openssl.so:undefinedsymbol:SSLv3_method-.../openssl.so(LoadError)我将多个版本的Ruby与RVM一起使用这个问题适用于所有人。我遇到问题的OpenSSL版本是1.0.2h,但我相信它是在1.0.2g中引入的。版本1.0.2f工作正常。如何解决兼容性问题(不降级OpenSSL)? 最佳答案 问题是由于ArchL

ruby - Ruby 中 lambda 和 def method_name 的区别

我正在阅读Pickaxe1.9,作者是这样使用lambda的:bo=lambda{|param|puts"Youcalledmewith#{param}"}bo.call99=>'Youcalledmewith99'bo.call"cat"=>'Youcalledmewithcat'我的问题是:这与仅定义一个执行相同操作的方法相比有何更好/更差/不同之处?像这样:defbo(param)puts"Youcalledmewith#{param}"endbo("hello")=>'Youcalledmewithhello'对我来说,lambda语法似乎更令人困惑,更像意大利面条。

ruby-on-rails - Rails 4 + Rspec + 设计 : undefined method 'env' in controller specs for sign_in a user

在我的spec_helper.rb中我添加了config.includeDevise::TestHelpers,:type=>:controller在:allhook之前的Controller规范中,我正在尝试使用此代码登录用户@request.env["devise.mapping"]=Devise.mappings[:user]user=FactoryGirl.create(:confirmed_user)sign_inuser并得到NoMethodError:undefinedmethod`env'fornil:NilClass。有什么想法吗? 最佳答

Ruby 哈希错误 : undefined method [] when attempting to set deeply nested keys

我有一段代码是这样的:my_hash={}first_key=1second_key=2third_key=3my_hash[first_key][second_key][third_key]=100ruby解释器给了我一个错误:undefinedmethod`[]'fornil:NilClass(NoMethodError)那么这是否意味着我不能那样使用哈希?还是您认为此错误可能是其他原因造成的? 最佳答案 哈希默认不嵌套。由于my_hash[first_key]未设置任何值,因此它是nil。并且nil不是散列,因此尝试访问其中一

ruby - 什么在 Ruby : defining the alias method or using alias_method? 中运行得更快

什么在以后调用时更快:deffirst_method?()second_method?()end或alias_method:firstmethod,:second_method如果可能的话,为什么?(注意:我不问什么更好/更好等等->这里只有原始速度以及为什么它更快很有趣) 最佳答案 至少在Ruby1.8.6中,别名似乎更快:#!/usr/local/bin/rubyrequire'benchmark'$global_bool=trueclassObjectdeffirst_method?$global_boolenddefseco

ruby-on-rails - Ruby 中的私有(private)方法

定义私有(private)方法的RailsController示例:classApplicationController然后,它被用于ApplicationController的子类中:classCustomerController怎么可能从其子类中调用私有(private)方法?Ruby中的private是什么意思? 最佳答案 不能使用显式接收器调用私有(private)方法。但是它们可以被该类的任何子类和实例调用。Here很好地解释了Ruby中的public、protected和private方法。

ruby - Ruby 中的私有(private)/ protected block ?

Ruby似乎没有像这样定义protected/私有(private)block的工具:protecteddodefmethodendend与相比,这会更好protecteddefmethodendpublic您可能会忘记在protected方法之后“公开”的地方。似乎可以使用元编程来实现这一点。有什么想法吗? 最佳答案 由于您想按功能分组,您可以声明所有方法,然后使用protected后跟要保护的方法的符号来声明哪些方法是protected和私有(private)的,对于私有(private)方法也是如此。下面的类(class)说明

ruby - 为什么 'undefined method ` assert_equal' ' is thrown even after requiring ' test/unit'

我打开irb并输入:require'test/unit'但是当我使用assert_equal方法时,出现以下错误:NoMethodError:undefinedmethod'assert_equal'formain:Object。为什么即使在需要“测试/单元”之后也会发生这种情况? 最佳答案 assert_equal是在Test::Unit::TestCase的子类上定义的,因此仅在该类中可用。您可能会成功地使用includeTest::Unit::TestCase将这些方法加载到当前范围。更有可能的是,您最好将测试写在一个短文件中