小编And*_*imm的帖子

回应?和受保护的方法

response_to可能不是那么明显吗?在红宝石中工作.考虑一下:


class A

   def public_method
   end

   protected
   def protected_method
   end

   private
   def private_method
   end

end

obj = A.new
obj.respond_to?(:public_method)
# true - that's pretty obvious
obj.respond_to?(:private_method)
# false - as expected
obj.respond_to?(:protected_method)
# true - WTF?
Run Code Online (Sandbox Code Playgroud)

因此,如果'obj'响应protected_method,我们应该期待

obj.protected_method
Run Code Online (Sandbox Code Playgroud)

我不应该提出异常吗?

......但它明显提升了

调用respond_to的文档点?第二个参数设置为true也检查私有方法

obj.respond_to?(:private_method, true)
# true
Run Code Online (Sandbox Code Playgroud)

这更合理

所以问题是如何检查对象是否只响应公共方法?有没有比这更好的解决方案?

obj.methods.include?(:public_method)
# true
obj.methods.include?(:protected_method)
# false
Run Code Online (Sandbox Code Playgroud)

ruby encapsulation access-specifier

15
推荐指数
2
解决办法
6285
查看次数

Ruby 1.9中的自动加载线程安全吗?

在我看来,自从这个着名的线程以来,Ruby社区一直在关注自动加载,因为出于线程安全原因而不鼓励使用它.

有谁知道这不再是Ruby 1.9.1或1.9.2中的问题吗?我已经看过一些关于包装需求的讨论等等,但1.9更改日志(或者至少和我能找到的一样多)似乎并没有解决这个特定的问题.我想知道我是否可以在没有任何合理悲伤的情况下合理地开始自动加载仅1.9的库.

提前感谢任何见解.

ruby multithreading autoload ruby-1.9

15
推荐指数
2
解决办法
6075
查看次数

错误:git checkout-index:无法创建文件

我想要做的是在Windows上使用git克隆,但是父存储库存在于unix机器中.

我使用ssh克隆从UNIX到Windows的克隆,我得到了这个奇怪的错误.

error: git checkout-index: unable to create file <filename>
Run Code Online (Sandbox Code Playgroud)

这发生在git clone的结帐步骤中.

谁能帮我?

git git-clone git-checkout

15
推荐指数
3
解决办法
9566
查看次数

15
推荐指数
2
解决办法
8221
查看次数

在Ruby中构建字符串的最快方法是什么?

Ternary运算符中,一个想要加入["foo", "bar", "baz"]逗号和"and"的人引用了Ruby Cookbook的话

如果效率对您很重要,则在将项目附加到现有字符串时不要构建新字符串.[等等] ...使用str << var1 <<''<< var2代替.

但这本书写于2006年.

<<在Ruby的所有主要实现中,使用appending(ie )仍然是在给定一个较小字符串数组的情况下构建大字符串的最快方法吗?

ruby string optimization

15
推荐指数
1
解决办法
4948
查看次数

测试Rails 3 Scopes有意义吗?

我有点不知所措.Rails 3中的Scopes的单元测试是否有意义?

一方面,我正在编写代码,我应该测试该代码.

但是,另一方面,基本上我的所有范围都是微不足道的.检查传递参数的一个变量几乎是我迄今为止最复杂的范围.

scope :author, proc { |author| where(:author_user_id => author }

该代码是微不足道的,并且或多或少地覆盖了实际使用范围的函数.

测试或不测试范围的最佳实践是什么?

unit-testing named-scope ruby-on-rails ruby-on-rails-3

15
推荐指数
2
解决办法
5572
查看次数

ruby 1.9和RSpec2有没有好的突变测试工具?

我曾经使用过Heckle,但由于ParseTree的问题,它与ruby 1.9不兼容.我寻找替代方案,但唯一看起来很有希望的是Chaser,而且我没有任何明确的文档可以用来看看我是否可以使用RSpec.它似乎有Test :: Unit依赖.

那么 - 是否有人使用任何很酷的工具来真正检查测试的质量?

或者 - 有没有提供比c0覆盖更好的覆盖工具?这有助于解决同样的问题.我现在正在使用cover_me,但它是c0,就像rcov一样.

ruby code-coverage mutation-testing rspec2 ruby-1.9

15
推荐指数
1
解决办法
1136
查看次数

语法错误,意外',',期待')'

我在使用1.8.7后安装了Ruby 1.9.2,因为我需要一个功能.我曾经调用过很多这样的方法:

do_something (arg0, arg1)
Run Code Online (Sandbox Code Playgroud)

使用1.9.2,我得到以下错误, syntax error, unexpected ',', expecting ')'修复似乎是:

do_something arg0, arg1
Run Code Online (Sandbox Code Playgroud)

但这可能需要几个小时才能解决所有问题.有没有解决的办法?为什么一开始就是错误?谢谢

ruby syntax-error ruby-1.9

15
推荐指数
1
解决办法
3万
查看次数

Ruby中And/&&的运算符优先级

我对Ruby中的和/ &&/=关键字有疑问.

ruby文档说,所提到的关键字的优先级是:(1)&&,(2)=,(3)和.

我写了这段代码:

def f(n) 
 n
end

if a = f(2) and  b = f(4) then  
    puts "1) #{a} #{b}" 
 end

if a = f(2) &&  b = f(4) then   
    puts "2) #{a} #{b}"     
end
Run Code Online (Sandbox Code Playgroud)

输出是:

1)2 4 [预期]

2)4 4 [ 为什么?]

出于某种原因,使用&&会导致a和b评估为4?

ruby and-operator

14
推荐指数
2
解决办法
5266
查看次数

Enumerator :: Yielder#yield方法何时有用?

这个问题提到了这个Enumerator::Yielder#yield方法.我之前没有使用它,我想知道在什么情况下它会有用.

当您想要创建无限的项目列表(例如Eratosthenes的Sieve)以及何时需要使用外部迭代器时,它是否主要有用?

ruby yield enumerable

14
推荐指数
1
解决办法
2641
查看次数