jjzjj

ruby-on-rails - 何时考虑在 Rails 应用程序中创建自己的 Ruby 模块?

使用Ruby模块,您可以将可能在一个地方使用的一堆方法聚集在一起,然后将它们包含到一个类中,就好像您在该类中编写了它们一样。Rails应用程序中的Ruby模块有哪些实际用途?如果有人能举出他们实际使用自己模块的示例,我将不胜感激,这样我就能了解我应该考虑创建它们的情况。谢谢。 最佳答案 1)每当我要复制(或实质上复制)一段代码时:“哦,我可以剪切/粘贴到另一个Controller中......”2)任何时候我编写的代码很明显将来会被重用。3)具有特定用途的大型代码,其中该用途与Controller/模型的主要用途截然不同。这与(2)

sql - 何时使用 ORM(Sequel、Datamapper、AR 等)与纯 SQL 进行查询

我的一位同事目前正在设计如下所示的SQL查询以生成报告,这些报告通过外部数据查询显示在excel文件中。目前只需要DB上的上报流程(无CRUD操作)。我试图说服他最好使用ruby​​ORM以便能够在rails/sinatra应用程序中显示数据。尽管在显示数据方面有明显的优势,但学习使用像Sequel或Datamapper这样的ORM对他有什么优势?他正在编写的SQL查询显然相当复杂,并且对SQL比较陌生,他经常提示它非常耗时且令人困惑。是否可以使用ORM编写极其复​​杂的查询?如果是这样,哪个最合适(我听说Sequel对遗留数据库有好处)?在进行复杂的数据库查询时,学习Ruby和使用O

ruby - 何时在 expect Rspec 方法中使用大括号与圆括号?

我有一个测试是这样做的:expect(@parser.parse('adsadasdas')).toraise_error(Errno::ENOENT)但它没有用。我改为:expect{@parser.parse('adsadasdas')}.toraise_error(Errno::ENOENT)它奏效了。我们什么时候使用大括号,什么时候使用圆括号? 最佳答案 为了回应OP的评论,我编辑并完全重写了我的答案。我意识到我原来的答案被过于简单化了,以至于它可能被认为是不正确的。您的问题实际上已被另一个StackOverflowques

ruby - 何时使用 block

我喜欢Rubyblock!它们背后的想法非常简洁方便。我刚刚回顾了过去一周左右的代码,基本上我写过的每一个ruby​​函数,我注意到没有一个返回值(value)!我总是使用block来传回数据,而不是返回值!我什至发现自己在考虑编写一个小的状态类,它允许我编写如下代码:something.do_stuffdo|status|status.successdo#successfulcodeendstatus.faildo#failcodeputsstatus.error_messageendend我是不是用了太多积木?是否有使用block的时间和使用返回值的时间?有什么需要注意的陷阱吗?我

ruby-on-rails - 何时在 Ruby on Rails 中使用内存

2008年7月中旬,Memoization被添加到Rails核心。用法演示是here.关于何时应该内存方法,以及每个方法的性能影响,我还没有找到任何好的例子。Thisblogpost,例如,建议通常根本不应该使用内存。对于可能具有巨大性能影响的内容,除了提供简单教程之外似乎没有其他资源。有没有人见过在自己的项目中使用memoization?哪些因素会让您考虑内存方法?在我自己做了更多研究之后,我发现在Rails核心中使用记忆化的次数非常多。这是一个例子:http://github.com/rails/rails/blob/1182658e767d2db4a46faed35f0b1075

加载脚本时何时使用异步与延期?

因此,我最近了解到,将您的JS放在DOM的底部是过时的,我应该再次将它们放在具有“异步”和“递延”属性。伟大的。但是,根据优先级,我对应该使用的是有点困惑。所以我有:jQuery对页面外观没有立即影响的jQuery插件确实对页面外观有直接影响的jQuery插件我自己的个人脚本,对页面的外观有直接影响,也依赖于jQuery哪个应该得到异步,哪个应该延期?如果我正确理解所有这些,那么对网站的外观没有立即影响的所有这些都应该延迟,而其他所有内容都变得异步。正确的?还是我把这些混在一起了。看答案这很简单。您应该使用[async]对于可以按任何顺序执行的脚本,以及[defer]对于在解析HTML后必须执

ruby - Ruby 中的 `eval` 何时合理?

"Is'eval'supposedtobenasty?"启发了这个:大多数人都认为eval不好,并且在大多数情况下有更优雅/更安全的替代品。所以我想问:如果eval经常被滥用,是否真的需要它作为一种语言特性?是不是弊大于利?就个人而言,我发现它唯一有用的地方是插入配置文件中提供的字符串。编辑:这个问题的目的是在eval是唯一或最佳解决方案时获得尽可能多的真实案例。所以请不要进入“语言是否应该限制程序员的创造力”的方向。Edit2:当我说eval时,我当然指的是eval字符串,而不是将ruby​​block传递给instance_eval或class_eval.

ruby-on-rails - 我何时何地需要 Rails 应用程序中的文件?

假设我的Rails应用程序的lib目录中有以下文件:#lib/proxy.rbmoduleSomeServiceclassServiceProxydefdo_somethingendendend如果我想在模型中使用ServiceProxy,我可以这样使用它:#app/models/product.rbrequire'proxy'classProduct这行得通,但我注意到如果我想在另一个模型中使用ServiceProxy,我不需要在第二个模型文件中“需要‘代理’”。似乎在任何模型中“需要'代理'”一次都会将其添加到查找路径中。谁能解释这种行为以及Rails应用中围绕它的最佳实践?谢谢!

ruby - 何时使用 Ruby DelegateClass 而不是 SimpleDelegator? (DelegateClass 方法与 SimpleDelegator 类)

可能我遗漏了一些简单的东西,但我不明白如何使用Ruby的DelegateClass方法,我的意思是什么时候使用它而不是SimpleDelegator类(class)。例如,以下所有内容的工作原理几乎相同:require'delegate'a=SimpleDelegator.new([0])b=DelegateClass(Array).new([0])c=DelegateClass(String).new([0])a[0,1]pb#=>[0,2]pc#=>[0,3]请注意,将哪个类传递给DelegateClass似乎并不重要。 最佳答案

ruby - 何时在 Ruby 方法中使用 `self.foo` 而不是 `foo`

这不是Rails特有的——我只是以Rails为例。我在Rails中有一个模型:classItem(假设Item模型(类)有一个名为name的方法。)我什么时候需要使用self.name我什么时候可以只使用name(例如,#{name})? 最佳答案 在调用方法时更喜欢省略self.是惯用的;通常不需要。调用setter方法时,您必须使用self.foo=xxx,而不是foo=xxx,以便Ruby意识到您没有尝试创建新的局部变量。同样,如果您有一个与方法同名的现有局部变量do_something,这不太可能发生,您必须使用self.d