Tag: ruby

Ruby相当于virtualenv?

有没有类似的Python实用程序virtualenv ? 基本上它允许你将Python包安装到一个沙盒环境中,所以easy_install django不会进入你的系统范围的站点包目录,它会进入virtualenv创build的目录。 例如: $ virtualenv test New python executable in test/bin/python Installing setuptools…cd ………done. $ cd test/ $ source bin/activate (test)$ easy_install tvnamer Searching for tvnamer Best match: tvnamer 0.5.1 Processing tvnamer-0.5.1-py2.5.egg Adding tvnamer 0.5.1 to easy-install.pth file Installing tvnamer script to /Users/dbr/test/bin Using /Library/Python/2.5/site-packages/tvnamer-0.5.1-py2.5.egg Processing dependencies for tvnamer Finished processing dependencies for […]

在Ruby on Rails中重写setter方法的正确方法是什么?

我正在使用Ruby on Rails 3.2.2,我想知道是否以下是一个“正确”/“正确”/“确定”的方式来覆盖我的类属性的setter方法。 attr_accessible :attribute_name def attribute_name=(value) … # Some custom operation. self[:attribute_name] = value end 上面的代码似乎按预期工作。 但是, 我想知道,通过使用上面的代码,将来我是否会遇到问题,或者至less是Ruby on Rails会“出现什么问题” 。 如果这不是重写setter方法的正确方法,那么正确的方法是什么? 注意 :如果我使用的代码 attr_accessible :attribute_name def attribute_name=(value) … # Some custom operation. self.attribute_name = value end 我得到以下错误: SystemStackError (stack level too deep): actionpack (3.2.2) lib/action_dispatch/middleware/reloader.rb:70

testing一个Ruby类是否是另一个类的子类

我想testing一个类是否从另一个类inheritance,但似乎没有一个方法。 class A end class B < A end B.is_a? A => false B.superclass == A => true 我想要的一个微不足道的实现是: class Class def is_subclass_of?(clazz) return true if superclass == clazz return false if self == Object superclass.is_subclass_of?(clazz) end end 但我希望这已经存在。

Rails Observer替代品4.0

随着Observers正式从Rails 4.0中删除 ,我很好奇其他开发者正在使用什么。 (除了使用提取的gem之外)虽然观察者当然被滥用,有时很容易变得笨拙,除了caching清理之外,还有许多用例是有益的。 举个例子,一个需要跟踪模型变化的应用程序。 观察者可以很容易地观察模型A上的变化,并用数据库中的模型Blogging这些变化。 如果你想看几个模型的变化,那么一个观察者就可以处理这个变化。 在Rails 4中,我很好奇其他开发人员用什么策略代替观察者来重新创build这个function。 就我个人而言,我倾向于一种“胖控制器”的实现,在每个模型控制器的创build/更新/删除方法跟踪这些变化。 虽然它稍微膨胀了每个控制器的行为,但它确实有助于可读性和理解,因为所有的代码都在一个地方。 缺点是现在有几个控制器中的代码非常相似。 将代码提取到辅助方法中是一种select,但是仍然对那些遍地乱放的方法进行调用。 不是世界的尽头,但也不完全是“骨感的控制者”的精神。 ActiveRecordcallback是另一种可能的select,虽然我个人不喜欢,因为它往往将两个不同的模型紧密地结合在一起,在我看来。 所以在Rails 4中,没有观察者的世界,如果在创build/更新/销毁另一个logging之后必须创build新logging,那么将使用什么devise模式? 脂肪控制器,ActiveRecordcallback,或者其他的东西? 谢谢。

如何find包含匹配值的散列键

鉴于我有下面的客户端哈希,是否有一个快速的ruby的方式(无需编写一个多行脚本)获得密钥给我想匹配的client_id? 例如如何获得client_id == "2180"的密钥? clients = { "yellow"=>{"client_id"=>"2178"}, "orange"=>{"client_id"=>"2180"}, "red"=>{"client_id"=>"2179"}, "blue"=>{"client_id"=>"2181"} }

在Ruby中抛出exception与抛出exception有什么区别?

Ruby有两个不同的例外机制:抛出/捕获和提升/救援。 为什么我们有两个? 你应该什么时候使用一个,而不是另一个?

delete_all vs destroy_all?

我正在寻找从表中删除logging的最佳方法。 例如,我有一个用户的用户ID跨越很多表。 我想删除这个用户和每个在所有表中都有他的ID的logging。 u = User.find_by_name('JohnBoy') u.usage_indexes.destroy_all u.sources.destroy_all u.user_stats.destroy_all u.delete 这工作,并从所有表中删除用户的所有引用,但我听说, destroy_all是非常stream程重,所以我试过delete_all 。 它只将用户从他自己的用户表中删除,并且所有其他表中的id都为空,但保留完整的logging。 有人可以分享执行此类任务的正确stream程吗? 我看到destroy_all调用所有关联对象的destroy函数,但是我只想确认正确的方法。

我可以在不包含它的情况下调用Ruby模块的实例方法吗?

背景: 我有一个模块,它声明了一些实例方法 module UsefulThings def get_file; … def delete_file; … def format_text(x); … end 我想从一个class级中调用这些方法中的一些。 通常你如何在ruby中这样做是这样的: class UsefulWorker include UsefulThings def do_work format_text("abc") … end end 问题 include UsefulThings从UsefulThings 所有的方法。 在这种情况下,我只希望format_text并明确不希望get_file和delete_file 。 我可以看到几个可能的解决scheme: 以某种方式直接在模块上调用方法,而不在任何地方包含它 我不知道如何做到这一点。 (因此,这个问题) 不知何故包括Usefulthings ,只能引入一些方法 我也不知道如何做到这一点 创build一个代理类,包括UsefulThings ,然后委托format_text到该代理实例 这将工作,但匿名代理类是一个黑客。 呸。 将模块分成2个或更多个较小的模块 这也是可行的,也许是我能想到的最好的解决scheme,但我宁愿避免它,因为我最终会扩大几十个和几十个模块 – pipe理这将是负担繁重 为什么单个模块中有很多不相关的function? 它是一个来自Rails应用程序的ApplicationHelper ,我们的团队事实上已经决定将这个应用程序作为任何不属于任何其他地方的具体事物的倾倒地。 大多数独立的实用程序方法,到处使用。 我可以把它分解成单独的助手,但是会有30个,每个都有1个方法…这看起来没有什么效果

检查一个表是否存在于Rails中

我有一个rake任务,除非有一个表存在,否则不能工作。 我正在一个网站上与20多名工程师合作,所以我想确保他们已经迁移了表格,然后才能执行将填充相应表格的rake任务。 AR有没有像Table.exists这样的方法? 我怎样才能确保他们已经成功迁移表?

如何在ruby中创buildSHA1哈希?

SHA哈希函数