草庐IT

Instance_eval

全部标签

ruby-on-rails - Rails 元编程 : How to add instance methods at runtime?

我正在Rails中定义我自己的AR类,它将包括为用户字段0-9动态创建的实例方法。用户字段不直接存储在数据库中,它们将一起序列化,因为它们不经常使用。以下是执行此操作的最佳方法吗?替代方案?应该从哪里调用添加方法的启动代码?classInfo 最佳答案 一个不错的方法,尤其是当您可能有超过0..9个用户字段时,将使用method_missing:classInfoUSER_FIELD_METHOD=/^user_field_(\n+)$/defmethod_missing(method,*arg)returnsuperunlessm

ruby-on-rails - rails : Subclass not registering as instance of parent class

在我正在使用的Rails应用程序中,我有如下代码:#app/models/a.rbclassA当我在本地运行它时,它按预期执行并且我得到“notnil”作为返回值。但是我在我的测试环境中得到了nil。测试环境显示A是letter(B.new)的祖先(B.ancestors)code>),但无法使用大小写相等运算符或is_a?(A)注册为子类。A===B.new#=>falseintestenvironment,truelocallyB.new.is_a?(A)#=>falseintestenvironment,truelocally这似乎是一个Rails自动加载问题,但我不确定如果父类

ruby - Ruby 中 Kernel::eval 的风险和注意事项?

我正在使用Ruby1.9.2p180。我正在为Rubyvis(成为SciRuby的一部分)编写持续评估工具。基本上,您在输入文件(例如,test.rb)中设置了Rubyvis::Panel,并且此SciRuby类(Plotter)监视test.rb进行修改。当发生变化时,SciRuby通过eval运行脚本。如果我从命令行运行该脚本,它会工作,但是当通过eval执行时,绘图是错误的——一条直线,好像所有数据都消失了,而不是whatyouseehere。注意:以前,这里说SVG不同——但事实证明这是加载REXML而不是nokogiri的结果。Herearethetestscriptsand

ruby - Rspec:访问 Klass.any_instance.stub block 内的实例

Feature:testrandomnessInordertomakesomecodetestableAsadeveloperIwantArray#sampletobecomeArray#first如果可以访问Klass.any_instance.stubblock中的实例,那将是可能的。像这样:Array.any_instance.stub(:sample){instance.first}但是那个afaik是不可能的。无论如何,场景需要! 最佳答案 我找到了一个hacky解决方案,我已经在rspec版本2.13.1和2.14.4上

ruby - Rspec:allow 和 allow_any_instance_of 之间的区别

我有一个简单的MySQL包装类,它将运行查询并返回结果。classRsqldefinitialize(db)@client=Mysql2::Client@db=dbenddefexecute_query()client=@client.new(@db)client.query("select1")endend我想测试一些涉及查询结果的东西,但我不想实际连接到数据库来获取结果。我试过这个测试,但它不起作用:RSpec.describeRsqldoit"doesit"domock_database=doublersql=Rsql.new(mock_database)mock_mysql_c

ruby - Ruby 1.9.2 中 instance_eval 在哪里定义?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭4年前。Improvethisquestion原谅我的无知,但我一定是漏掉了什么。我可以找到instance_eval的文档对于Object类中的ruby​​1.8.7,但我在任何地方都找不到1.9.2.我知道该功能仍然受支持,因为我正在使用它。它是否已被移至某个secret父类?

ruby-on-rails - ruby instance_variable_get 返回 nil

我的instance_variable_get方法有问题,因为它总是用我的对象实例之一返回nil对象。这是我的代码:logger.info"ASDF:"+@d_tree.inspectlogger.info"ASDF:"+@d_tree.instance_variable_get(:@content);输出是:ASDF:#TypeError(can'tconvertnilintoString):/app/controllers/d_trees_controller.rb:38:in`+'根据检查对象似乎没问题,但instance_variable_get返回一个nil对象感谢您的帮助!

ruby - instance_eval 和单例方法的区别

单例方法是一种只在一个实例上定义的方法。foo=Foo.newdeffoo.case#singletonmethodendinstance_eval不是做同样的事情吗?为特定实例定义方法?有什么区别? 最佳答案 Object#instance_eval是一种方法,您确实可以使用它为对象定义方法。单例类是一个“地方”,为对象定义的单例方法“住”在那里。所以这是两个完全不同的东西。 关于ruby-instance_eval和单例方法的区别,我们在StackOverflow上找到一个类似的问题

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 - 如何在不使用 eval 的情况下将字符串转换为 Ruby on Rails 中的散列?

这个问题在这里已经有了答案:HowdoIconvertaStringobjectintoaHashobject?(16个答案)关闭9年前。这是需要转换成哈希的字符串。"{:status=>{:label=>'Status',:collection=>return_misc_definitions('project_status')}}"我们不能使用eval因为eval会执行字符串中的方法return_misc_definitions('project_status')。Ruby/Rails中是否有纯字符串操作来完成这种转换?