草庐IT

exec_proc

全部标签

ruby - 为什么 Symbol#to_proc 有这种类型的行为?

我找到了这个在Ruby中实现自定义Symbol#to_proc的示例代码:classSymboldefto_procputs"InthenewSymbol#to_proc!"Proc.new{|obj|obj.send(self)}endend它包含额外的“puts...”字符串以确保它不是内置方法。当我执行代码时p%w{davidblack}.map(&:capitalize)结果是:InthenewSymbol#to_proc!["David","Black"]但为什么不是这样呢?InthenewSymbol#to_proc!["David"]InthenewSymbol#to_p

ruby-on-rails - Rails exec_query 绑定(bind)被忽略

我正在尝试使用exec_query运行任意查询,其中的值是通过绑定(bind)引入的,但出现了意外错误。在控制台中运行sql='SELECT*FROMfoobarsWHEREidIN(?)'name='query_name_placeholder'binds=[FooBar.first]ActiveRecord::Base.connection.exec_querysql,name,binds产生这个错误:AccountLoad(7.9ms)SELECT"foobars".*FROM"foobars"ORDERBY"foobars"."id"ASCLIMIT1PG::SyntaxErr

ruby - 在 Ruby 中使用 String#to_proc 实现 to_s(2)

我正在学习一元运算符&。关于在方法调用的参数中使用&有一些很好的问题。通常格式类似于some_obj.some_method(&:symbol):Rubyunaryoperator&onlyvalidonmethodargumentsWhatisthefunctionalityof“&:”operatorinruby?Whatdoesmap(&:name)meaninRuby?UnaryAmpersandOperatorandpassingprocsasargumentsinRuby似乎主要思想是当一元运算符放在符号前面时,ruby调用:symbol上的to_proc方法。因为Symb

带有参数的 Ruby Proc

我正在尝试将参数发送到Rubyprocp1=[54,21,45,76,12,11,67,5]qualify=proc{|age,other|age>other}putsp1.select(&qualify(30))这是我得到的错误:undefinedmethod`qualify'formain:Objectage来自array的迭代,我想要最后一个parameter(30)进入proc。proc是用于此目的的正确工具吗?我是proc的新手。我不清楚如何在其中获取该parameter。 最佳答案 为了在select谓词中使用quali

c - Ruby C 扩展如何存储 proc 以供以后执行?

目标:允许c扩展接收延迟执行的block/proc,同时保留当前执行上下文。我在c中有一个方法(暴露给ruby​​),它接受一个callback(通过VALUEhash参数)或一个block。//Forbrevity,letsassumem_CBYOissetuptomakeaCBYOmoduleavailabletorubyexternVALUEm_CBYO;VALUECBYO_add_callback(VALUEcallback){if(rb_block_given_p()){callback=rb_block_proc();}if(NIL_P(callback)){rb_rais

ruby-on-rails - 如何使模块方法可用于常量 Proc 变量? ( ruby )

这是在我的应用程序助手中:defcall_me"blah"endP=Proc.new{call_me}deftest_meP.callend如果我在我看来这样做:我收到一条错误消息,指出call_me是一个未定义的方法。如何让Proc能够调用call_me?要求不这样做。前缀为ApplicationHelper::call_me也不会。:(这行得通,但我真的不喜欢它,因为test_me会被调用很多次,而实际上还有更多的Proc:deftest_mep=Proc.new{call_me}p.callend 最佳答案 它应该像在Ruby

ruby exec powershell 窗口

当我在ruby​​中运行以下命令时:`powershell.exe-executionpolicyunrestricted-commandget-module-listavailable`...我得到的结果与我只运行cmd并执行的结果不同:powershell.exe-executionpolicyunrestricted-commandget-module-listavailable我该如何解决这个问题,才能得到相同的结果? 最佳答案 是的。修复显然是sysnative别名。使用:C:/windows/sysnative/wind

ruby-on-rails - 使用 bundle exec 运行 Rails 控制台

当我执行bundleexecrailsc时,我得到一个带有以下提示的ruby​​控制台Loadingdevelopmentenvironment(Rails3.0.3)jruby-1.6.3:001>一切看起来都井井有条,但是当我使用↑↓箭头拉出我之前的命令时,我得到^[[A^[[B输出到我的控制台。在没有bundleexec的情况下运行railsconsole工作正常。这是为什么的任何原因?bundleexec是否启动了一些新的人造shell? 最佳答案 看起来bundler阻止了irb控制台使用readline。您可以通过在.i

ruby - rbenv exec bundle exec 而不仅仅是 bundle exec

我正在尝试设置rbenv:https://github.com/sstephenson/rbenv#section_2我有一个问题:我必须在一切之前使用rbenvexec所以现在我要做bundleexec:rbenvexec捆绑执行我该如何解决这个问题?编辑运行rbenvrehash后我得到:$➔rbenvrehash$➔railssbash:/usr/local/bin/rails:/usr/local/bin/ruby:badinterpreter:Nosuchfileordirectory 最佳答案 真的很傻:我忘记运行exe

ruby - 为什么调用在方法中声明的返回 Proc 有效?

我一直在学习CodecademyRuby类(class),其中有一个关于lambdas和Procs的练习。我确实理解其中的区别,但我不太明白为什么此处列出的第一个代码有效,而第二个却无效。为什么这样做:defbatman_ironman_procp=Proc.new{return"Batmanwillwin!"}p.call"IronManwillwin!"endputsbatman_ironman_proc#prints"Batmanwillwin!"但不是这个:defbatman_ironman_proc(p)p.call"IronManwillwin!"endp=Proc.new