草庐IT

alias-method-chain

全部标签

arrays - ruby 基础 : Pop Method in Array

我正在努力在线学习LearningRubytheHardWay;我刚刚完成第26个练习,这是一个“测试”,您可以借此修复某人的损坏代码。我的问题是在pop方法中使用参数。我熟悉基础知识,但正确答案意味着将参数从“-1”更改为“1”,我不确定它到底是什么意思。有问题的行是:defputs_last_word(words)word=words.pop(1)putswordend我假设它从数组中弹出第二个元素,但我想要确认或帮助,以适当的为准。 最佳答案 Array#pop的文档中可以得到最好的确认:http://rubydoc.info

ruby - Object#method 和动态响应器

我有一个名为User的Ruby对象(特别是ActiveRecord对象)。它响应find_by_id、find_by_auth_token等方法。但是,这些不是通过def或define_method。相反,它们是通过method_missing处理的动态方法。我想通过Object#method获得对其中一种方法的引用,例如:User.method(:find_by_auth_token)虽然这看起来并不可行。我想到的最佳解决方案是:proc{|token|User.find_by_auth_token(token)}有没有其他方法可以使用这样的包装方法?我真的无法将Object#met

ruby - 为什么是 Module.methods() 和 respond_to?在 irb 中的工作方式与在脚本中不同?

我尝试在Ruby中使用反射方法,遇到了一种我觉得非常奇怪的行为。以下示例在IRB中和调用ruby​​脚本时似乎有所不同:示例1:defmyfun;endprespond_to?(:myfun)在IRb中,这表示“真”,在脚本中:'false'。示例2:ml=methodsdefmyfun;endpmethods-ml在IRb中,这表示[:myfun]。在脚本中:[].我在1.8、1.9MRI、JRuby1.5.6等下发现了这个-所以我认为这是正常的。为什么不同?我很确定“respond_to?”是查看方法是否可用的方法-为什么在上述情况下不起作用? 最佳答案

ruby-on-rails - 无方法错误 : undefined method `email' for nil:NilClass : can't send email with devise/sendgrid(Rails 3. 2)

我正在尝试将actionmailer与sendgrid一起使用,并在Rails3.2上进行设计。我浏览了很多关于SO的问题,比如用sendmail替换smtp,创建一个config/email.yml我没有一个)和更多的想法,但没有任何效果。我一定是遗漏了什么。电子邮件似乎不会在开发或生产中发送。(sendgrid不报告任何已发送的电子邮件,并且我在“手动测试”中检查过我从未收到过电子邮件)。运行Heroku控制台,我刚刚设法获得以下信息:NoMethodError:undefinedmethod`email'fornil:NilClassonthenotifier.rbfile::m

ruby - RSpec 3 : How to stub methods and constants from code we have yet to build/add?

我们正在从我们构建的名为DBQuery的gem中重构一个名为DataSourceIntegrations的Ruby应用程序。我正在将一些DBQuery代码迁移到DataSourceIntegrations中。我正在构建的部分取决于DBQuery,它将在单独的步骤中添加。与此同时,我需要编写RSpec测试来验证DBQuery代码是否被正确调用,所有这些都没有DBQuery。我有的是:代码—gem密码—moduleDBQueryclassQueryMAX=1000defretrieve_users#ReturnsanarrayofuserIDsendendend应用程序代码—moduleI

ruby-on-rails - Rails4 迁移-添加 null : false to an add_reference method?

我刚开始学习Rails,如果这个问题的答案很明显,我很抱歉。我已经在我的应用程序中添加了对帖子和类别表的迁移,现在我使用以下行在我的帖子表中添加对默认值非空的类别的引用:add_reference:posts,:category,index:true,foreign_key:true,null:false但是我在运行迁移时遇到以下错误:SQLite3::SQLException:CannotaddaNOTNULLcolumnwithdefaultvalueNULL:ALTERTABLE"posts"ADD"category_id"integerNOTNULL我已经尝试通读API,但无法

ruby - 变量如何绑定(bind)到 define_method 的主体?

在尝试提高我的Ruby技能时,我不断遇到这种情况,我无法通过阅读API文档来找出解释。一个解释将不胜感激。这是示例代码:fornamein[:new,:create,:destroy]define_method("test_#{name}")doputsnameendend我想要/期望发生的是name变量将绑定(bind)到给定define_method的block,当#test_new被称为它会输出"new"。相反,每个定义的方法输出“destroy”——分配给name变量的最后一个值。我对define_method及其block有什么误解?谢谢! 最佳答

ruby-on-rails - rspec 用户测试给出 "undefined local variable or method ` confirmed_at' "

我的rspec测试给了我NameError:undefinedlocalvariableormethod`confirmed_at'for#我的用户规范是:require'spec_helper'describeUserdobefore(:each)do@user=Factory(:user)end#Factorywillmakesurethatinthefutureifattributesareaddedthetestsbelowdon'tbreak#JustaslongastheFactoryisupdatedforthenewattributesasappropriate.con

ruby 性能 : define method with define_method or eval

在查看ActiveSupport源代码时,我注意到有时eval用于define_method就足够的地方。示例:ActiveSupport:Module.delegate我认为define_method是一种更干净、更安全的做事方式。eval相对于define_method有什么好处?性能、内存使用情况还是其他? 最佳答案 当您使用define_method时,您正在定义的方法can'tacceptablock.It’sprettywellknownthatbecauseofadeficiencyinblocksargumentsi

ruby-on-rails - alias_method 和 alias_method_chain 有什么区别?

我正在开发我的网络应用程序,我想覆盖一个方法,例如,如果原始类是classAdeffoo'original'endend我想重写foo方法,可以这样做classAalias_method:old_foo,:foodeffooold_foo+'andanotherfoo'endend我可以像这样调用旧方法和新方法obj=A.newobj.foo#=>'originalandanotherfoo'obj.old_foo#=>'original'那么,如果我可以像以前那样访问和保留这两种方法,那么alias_method_chain有什么用呢? 最佳答案