草庐IT

动态分配

全部标签

ruby - Mac OSX Lion 和 Ruby - [致命] 分配内存失败

我在使用Ruby和OSXLion时遇到严重问题-每当我尝试启动Rails或什至是rake工具时,我都会收到此错误:[FATAL]failedtoallocatememory我尝试在不同版本(1.9.2-p180、1.9.2-p290、1.9.2-head)中重新编译ruby​​,但它总是一样。但是我注意到我可以删除一些gems,然后“rake”工具会起作用,只有“railss”会因该错误而死掉。似乎实际上没有足够的内存来容纳我正在使用的这么多gem,但这又一次看起来很奇怪——它在雪豹上工作得很好,甚至在我公司的macmini上和Lion上工作——唯一的区别是mini升级了SnowLeo

ruby-on-rails - 如何在 Rails 中动态调用或调用类?

假设我可以构造一个与现有类匹配的字符串,我该如何调用它?比如我有几个类:MyClass1MyClass2MyClass3我想通过构造一个与它们的名称相匹配的字符串来动态调用它们中的每一个。如果他们都有方法“方法”,我该如何做这样的事情?:(1..3).eachdo|n|("MyClass"+n).methodsend 最佳答案 constantize符合要求。您可以阅读更多相关信息here.在你的情况下,它会是这样的:(1..3).eachdo|n|"MyClass#{n}".constantize.methodsend

ruby - Ruby 中的循环分配

我有Enquiry和Consellor模型。我想以循环方式将查询分配给辅导员。如果有3个顾问和5个询问,那么分配应该是:Enquiry1=>C1,Enquiry2=>C2,Enquiry3=>C3,Enquiry4=>C1,Enquiry5=>C2我可以通过查询数据库并通过缓存进行优化来做到这一点,但正在寻找更好的解决方案。 最佳答案 Array#cycle(无限枚举器)很适合这个:counselors=%w(C1C2C3).cycleenquiries=Array.new(5){|i|"Enquiry#{(i+1).to_s}"}

Ruby - 动态地向类添加属性(在运行时)

这个问题在这里已经有了答案:addingattributestoaRubyobjectdynamically(6个答案)关闭8年前。我正在寻找一种在运行时或更好的方式向我已定义的类添加属性的方法:classClientattr_accessor:login,:passworddefinitializeargs={}self.login=args[:login]self.password=args[:password]endend但是,我有这个散列{:swift_bic=>"XXXX",:account_name=>"XXXX",:id=>"123",:iban=>"XXXX"}我希望这

ruby-on-rails - Nokogiri 是针对 LibXML 版本 2.7.7 构建的,但已动态加载 2.7.3

在Rails3中,我注意到每次调用框架时,无论是从rake、railsserver还是其他任何地方,我都会收到以下警告:NokogiriwasbuiltagainstLibXMLversion2.7.7,buthasdynamicallyloaded2.7.3在Google上搜索会得到一些博客文章,所有这些文章都建议使用显式库和包含路径重建Nokogiri。例如:http://mrflip.github.com/2009-08/nokogiri-hates-libxml2-on-osx.html但是,这并没有解决我的问题。输入nokogiri-v给我这个:---warnings:[]r

ruby - 动态添加 ruby​​ 类方法或实例方法

我对Ruby很陌生,所以还在学习中。我研究了很多关于如何动态添加方法,并且我成功地创建了实例方法,但在创建类方法时却没有成功。这就是我生成实例方法的方式:classBdefbefore_methodputs"beforemethod"enddefself.run(method)send:define_method,methoddobefore_methodputs"method#{method}"endendendclassA关于创建静态方法的最佳方法有什么想法吗?我的最终任务是寻找为类方法创建“之前”和“之后”任务的最佳方式。 最佳答案

ruby - 如何在 Ruby 中动态改变继承

我想在Ruby中为一个类动态指定父类。考虑这段代码:classAgentdefself.hook_up(calling_class,desired_parent_class)#DosomemagichereendendclassParentdefbarputs"bar"endendclassChilddeffooputs"foo"endAgent.hook_up(self,Parent)endChild.new.barParent和Child类定义均未指定父类,因此它们都继承自Object。我的第一个问题是:我需要在Agent.hook_up中做什么才能使Parent成为Child的父

Ruby - 覆盖/启用多重分配(例如 `a, b, c = d, e, f` )

在ruby中,你可以这样做:d=[1,2,3]a,b,c=da、b和c将分别接收值1、2和3。d,在本例中是一个Array,ruby知道将其内容分配给a、b,和c。但是,如果d是一个Fixnum,例如,只有a会被分配给d的值,而b和c将被分配nil。d的哪些属性允许它用于多重赋值?到目前为止,在我的探索中,我只能使Array的子类实例以这种方式运行。 最佳答案 这是一个非常没有文档记录的功能,我会谨慎使用它,但我们开始吧。摘自《TheRubyProgrammingLanguage》一书:Whentherearemultiplelva

ruby - 如何像在 Javascript 中一样在 Ruby 中动态创建对象及其方法?

我最近发现在Ruby中动态创建对象和方法是一件很费力的事情,这可能是因为我有Javascript背景经验。在Javascript中,您可以动态创建对象及其方法,如下所示:functionsomewhere_inside_my_code(){foo={};foo.bar=function(){/**dosomething**/};};如何在Ruby中完成上述语句(与在Javascript中一样简单)? 最佳答案 您可以使用单例方法实现此目的。请注意,您可以对所有对象执行此操作,例如:str="Ilikecookies!"defstr.

ruby-on-rails - Ruby:无法分配内存

我正在开发RubyonRails应用程序。我是Ruby/Rails的新手。我使用Ruby2.2.0和Rails4.2。当我运行如下命令时:railsgmigrationSomeMigrationName它失败了Cannotallocatememory-fork(2)(Errno::ENOMEM)我在2014年年中使用MacbookPro,搭载OSX10.10和Vagrant/Virtualbox来运行虚拟机(Ubuntu14.04)进行Rails开发。这是我的Vagrant文件:Vagrant.configure(2)do|config|config.vm.box="ubuntu/tr