草庐IT

paginator-instance-methods

全部标签

ruby - irb 中的所有命令都给出 "NoMethodError: undefined method ` write' for nil :NilClass"

我正在尝试从IRB获取当前的ruby​​版本,但它给我这个错误:>>RUBY_VERSIONNoMethodError:undefinedmethod`write'fornil:NilClassfrom/usr/local/lib/ruby/1.9.1/irb.rb:311:in`printf'from/usr/local/lib/ruby/1.9.1/irb.rb:311:in`output_value'from/usr/local/lib/ruby/1.9.1/irb.rb:160:in`block(2levels)ineval_input'from/usr/local/lib/r

ruby-on-rails - RSpec::Mocks::ExampleMethods 的未定义方法 instance_double

我有一个这样的测试用例:describeWorkCardsControllerdoit"something"dowork_card=instance_double(WorkCard,{:started?=>true})#somemorecodeendend当我运行RSpec时,出现错误:undefinedmethod'instance_double'for#根据http://rubydoc.info/github/rspec/rspec-mocks/RSpec/Mocks/ExampleMethods这种方法存在。所以我尝试通过以下方式直接访问它:describeWorkCardsCo

ruby - 可能对 curry 过程进行 instance_eval 吗?

假设我有这样一个类:classTestdeftest_func140endend还有一个proc,它引用了Test中的一个成员函数:p=->(x,y){x+y+test_func}#=>#要调用p,我将它绑定(bind)到Test的一个实例:test=Test.new#=>#test.instance_exec(1,2,&p)#=>143现在假设我只想将y传递给p,并且始终传递x=1:curried=p.curry[1]#=>#理想情况下,我应该能够像以前一样instance_exec,但是:test.instance_exec(2,&curried)=>NameError:undef

ruby 场 : documenting abstract methods implementations

我有一个典型的OO模式:一个基本抽象类(定义抽象方法)和几个以特定于类的方式实现这些抽象方法的类。我习惯于在抽象方法中只编写一次文档,然后它会自动传播到几个具体类(至少它在Javadoc、Scaladoc、Doxygen中按以下方式工作),即我不需要重复所有具体类中的相同描述。但是,我找不到如何在YARD中进行此类传播。我试过,例如:#Somedescriptionofabstractclass.#@abstractclassAbstractClass#Somemethoddescription.#@return[Symbol]somereturndescription#@abstra

ruby - 我可以将一个本身需要一个 block 的 block 传递给 ruby​​ 中的 instance_exec 吗?

我期待代码foo=proc{puts"foo"}instance_exec(1,2,3,&foo)do|*args,&block|puts*argsblock.callputs"bar"end输出123foobar但是报错bothblockargandactualblockgiven我可以将一个本身需要一个block的block传递给ruby​​中的instance_exec吗? 最佳答案 &foo尝试将foo作为block传递给instance_exec,而您已经传递了一个显式block。省略与号发送foo就像任何其他参数一样(除

ruby - 模块嵌套在 instance_eval/exec 或 module_eval/exec 中

我在尝试回答this时想到了这个问题.以下是预期的行为:moduleApModule.nestingend#=>[A]但是以下内容:A.instance_eval{pModule.nesting}A.instance_exec{pModule.nesting}A.module_eval{pModule.nesting}A.module_exec{pModule.nesting}全部返回[]。为什么这些不能像上面那样工作?附加问题Muistooshort提出了一个有趣的观点。如果这是正确的,那么Module.nesting将是依赖于文字上下文的方法和变量之一,例如Method#sourc

ruby-on-rails - vim/macvim : locate where a method/symbol is defined

我的大部分Ruby+RubyonRails开发都使用macvim/vim。目前是否有一种方法可以跳转到项目中定义方法的位置,即使它与调用它的位置不在同一个文件中?与语言无关的方式或特定于Ruby/Rails的方式均可。 最佳答案 我推荐使用ctags插件,BryanLiles制作了一个很好的截屏视频,介绍如何在Rails开发中使用它。http://smartic.us/2009/04/05/using-ctags-in-vim/来自他的页面:不那么完整的备忘单:^]–查找标签^T——倒退:tags–显示你去过的地方:tag–进入你的

ruby-on-rails - 弃用警告 : Dangerous query method (method whose arguments are used as raw SQL) called with non-attribute argument(s)

我将我的Rails5.1.4应用更新到了5.2.0。我的一个模型中有以下范围:scope:by_category,lambda{|category_slug|category_ids=Category.find_by(slug:category_slug)&.subtree_idswhere(category_id:category_ids)}由于该范围,Rails返回以下错误:DEPRECATIONWARNING:Dangerousquerymethod(methodwhoseargumentsareusedasrawSQL)calledwithnon-attributeargume

ruby-on-rails - rails : accessing field value from model method

刚开始学习Rails(三)。我正在努力寻找如何做一些可能完全微不足道的事情:从该模型的方法内部访问模型实例字段的值。以我为例:defformal_name@title+""+@forename+""+@surnameend所有三个@properties(它们都是数据库中表上的字段)都返回nil。他们不应该。令人难以置信的是,http://guides.rails.info/并未讨论如何访问字段,google什么也找不到。顺便说一句,我来自Django,这里的东西很明显。 最佳答案 @语法用于实例变量,这些实例变量(例如)在Contr

ruby - 如何像 instance_eval 方法那样在一个 block 中改变 self 呢?

instance_eval方法在其block中改变自身,例如:classD;endd=D.newd.instance_evaldoputsself#printsomethinglike#,not'main'!end如果我们自己定义一个方法(或任何其他方法(除了instance_eval)需要一个block),当打印self时,我们将得到'main',这与instance_eval方法不同。例如:[1].eachdo|e|putsself#print'main'end我如何定义一个像instance_eval这样的方法(需要一个block)?提前致谢。 最佳答