草庐IT

any_variable

全部标签

ruby - @instance_variable 在 ruby​​ block 内不可用?

使用以下代码:defindex@q=""@q=params[:search][:q]ifparams[:search]q=@q@search=Sunspot.search(User)dokeywordsqend@users=@search.resultsend如果使用@q而不是q,搜索总是返回空查询("")的结果。为什么是这样?@q变量对do...endblock不可用吗? 最佳答案 这取决于block的调用方式。如果使用yield关键字或Proc#call方法调用它,那么您将能够在block中使用您的实例变量。如果使用Object

Ruby 动态类。如何修复 "warning: class variable access from toplevel"

我正在尝试编写一个程序,根据从文件中读取的配置动态定义ruby​​类。我知道我可以使用Class.new来做到这一点。这是一个示例程序:x=[1,2,3]Test=Class.newdo@@mylist=xdeffooputs@@mylistendendTest.new.foo当我运行它时,我得到以下输出(使用ruby​​1.9.3p0运行):c:/utils/test.rb:4:warning:classvariableaccessfromtoplevelc:/utils/test.rb:7:warning:classvariableaccessfromtoplevel123Does

ruby - 总新手 : Instance variables in ruby?

请原谅新手问题,但为什么@game_score总是零?#bowling.rbclassBowling@game_score=0defhit(pins)@game_score=@game_score+pinsenddefscore@game_scoreendend 最佳答案 让我们看一下代码,好吗?#bowling.rbclassBowling@game_score=0#(1)此时(1),我们仍在classBowling中。记住:类和其他对象一样只是对象。因此,此时您将0分配给类对象Bowling的实例变量@game_score。de

ruby-on-rails - Ruby on Rails : pretty print for variable. hash_set.inspect ...有没有办法在控制台中漂亮地打印 .inspect ?

我发现自己在我的功能测试中做了很多puts.inpsects以确保我知道数据是如何格式化的......但是当散列对象中的每个条目之后没有新行时散列很难读取.无论如何,也许是一个gem?,pretty-print哈希?所以它看起来像这样:{entry1=>{entrey1.1=>1,entry1.2=>3},entry2=>3}而不是:{entry1=>{entrey1.1=>1,entry1.2=>3},entry2=>3}?谢谢! 最佳答案 你可以为此使用awesome_printgem。https://github.com/mi

ruby - 为什么要在 Ruby 中避免使用 @@class_variables?

我知道有人说在Ruby中应该避免使用类变量(例如@@class_var),而应该在类范围:defMyClass@@foo='bar'#Shouldnotdothis.@foo='bar'#Shoulddothis.end为什么在Ruby中不赞成使用类变量? 最佳答案 类变量经常因为它们在继承方面有时令人困惑的行为而经常受到诽谤:classFoo@@foo=42defself.foo@@fooendendclassBar23Bar.foo#=>23如果你改用类实例变量,你会得到:classFoo@foo=42defself.foo@f

Ruby 类 : initialize self vs. @variable

有人可以解释在定义类时初始化“self”和使用@variables之间的区别吗?举个例子classChild所以在这种情况下,我不能用@stuff替换self.stuff吗?有什么不同?此外,super()只是意味着Parent初始化方法中的任何内容,Child应该直接继承它,对吗? 最佳答案 一般来说,不是,self.stuff=stuff和@stuff=stuff是不一样的。前者在对象上调用stuff=方法,后者直接设置实例变量。前者调用一个可能是公共(public)的方法(除非在类中特别声明为私有(private)),而后者总

ruby - RSpec any_instance 返回 self

我正在尝试stub某个类的任何实例。我需要stubfetch方法,它用一些数据填充self。如何访问self变量,修改它并返回fetch方法?MyObject.any_instance.stub(:fetch){self}不返回MyObject实例。也许,模拟在这种情况下更有用。不幸的是,我还没有理解它们。 最佳答案 有一个openrspec-mocksissue解决这个问题。我希望在某个时候解决这个问题,但是以一种不破坏现有规范套件的方式添加它并不简单,这些规范套件使用any_instanceblock实现,因为我们会开始屈服一个

ruby-on-rails - 如何检查是否存在值不为 "undefined local variable or method"的变量?

这是一个常见的模式:如果变量不存在,我会得到一个未定义的局部变量或方法错误。现有代码有ifvariable_name.present?但这并没有说明变量不存在。我如何检查变量的值并说明它根本不存在?我试过:if(defined?mmm)thenifmmm.present?thenputs"true"endend但Ruby仍然检查内部mmm.present?并在它不存在时抛出“nosuchvariable”。我确信对此有一个共同的模式/解决方案。 最佳答案 将present?更改为!=''并使用&&运算符,它仅在第一个表达式为真时才尝

ruby - 总和(&:x) not working any more

我在我的Rails应用程序(4.1.2)中使用payments.sum(&:price)。自从我从Ruby1.9.3更新到2.1.2后,出现了以下错误:wrongnumberofarguments(1for2..3)这些变体有效:payments.map(&:price).sumpayments.to_a.sum(&:price)我必须重写我的代码还是我遗漏了什么?谢谢! 最佳答案 来自documentation:sum(*args)Calculatesthesumofvaluesonagivencolumn.Thevalueisr

ruby - 获取名称错误 : `format' is not allowed as an instance variable name when testing instance variable with rspec

我有以下测试:let(:client){Descat::Client.new}describe'poblacio'doit'shouldsetformatcorrectly'doclient.poblacio('v1','json','dades')expect(client.instance_variable_get(:format)).toeq('json')endend我有以下正在测试的代码:moduleDescatclassClientBASE_URL='http://api.idescat.cat/'definitialize(attributes={})attributes