草庐IT

ruby - 如何为使用 class_eval 定义的方法添加 RDoc 文档?

我正在使用class_eval来更简洁地定义一堆重复的方法,像这样:%w{greasychunkybacon}.product(%w{flyingskypoodle}).eachdo|a,b|class_eval"def#{a}_#{b};do_something;end"end我希望所有生成的方法都包含在RDoc文档中。是否有RDoc指令“手动”将方法添加到类的方法列表中?我找不到。 最佳答案 请参阅RDocdocumentationforRDoc::Parser::Ruby中有关元编程方法和隐藏方法和属性的部分.在你的情况下,你

ruby - base.extend 与 base.class_eval 扩展

这个语法在功能上是否等同defself.included(base)base.class_evaldoextendClassMethodsendend为了这个?defself.included(base)base.extendClassMethodsend 最佳答案 唯一相关的区别是只有类响应“class_eval”,而类和实例都响应“扩展”。如果您不打算将您的方法与对象实例一起使用,那么它们是等效的,尽管第二个实现可用于将实例方法添加到特定实例,而第一个不能。 关于ruby-base.

ruby - class ClassName <::Other ClassName 在 Ruby 中做什么?

昨天在RSpec中找到了如下代码:classOptionParser这是做什么的?这和classOptionParser有什么区别?? 最佳答案 一个可运行的例子可能最好地解释了这个想法:classCdefinitializeputs"Attoplevel"endendmoduleMclassCdefinitializeputs"InmoduleM"endendclassP运行时产生:InmoduleMAttoplevel 关于ruby-classClassName htt

ruby-on-rails - 防止 Rails 2/3 缓存 Lib/Classes

有谁知道如何指示rails不缓存lib文件夹中包含的类? 最佳答案 “缓存类”我想你的意思是在处理新请求之前,app目录中的源文件会自动重新加载到开发环境中?这与缓存无关,Ruby的正常行为是,只要进程运行,就只读取和解析一次源文件,再也不会。Rails(实际上是ActiveSupport::Dependencies)提供了一种在处理请求之前重新加载整个代码的机制。在开发环境中,这很有用,因为您不想在每次更改代码时都重新启动本地网络服务器。在生产环境中,这会严重损害性能,因此被关闭。默认情况下,应用类被标记为可重新加载。您可以使用u

ruby - 时间 :Class after requiring active_support/time_with_zone 的未定义方法 `zone`

我在使用Ruby2.2.1并安装了active_support4.2,所以我想使用Time.zone.parse('2007-02-1015:30:45')如此处所述:http://api.rubyonrails.org/classes/ActiveSupport/TimeWithZone.html但即使在需要active_support和active_support/time_with_zone之后,我觉得Time.zone仍然不起作用。观察:2.2.1:002>require"active_support"=>true2.2.1:003>Time.zoneNoMethodError

ruby-on-rails - 有人可以向我解释 class << self 吗?

我是第一次接触Rails编程,在查看我下载的一些库的代码时,我偶尔会注意到代码:class我尝试在网上搜索解释,但是 最佳答案 在ruby中,class打开foo引用的对象的单例类.在Ruby中,每个对象都有一个与之关联的单例类,它只有一个实例。这个单例类包含特定于对象的行为,即单例方法。所以,class打开self的单例类.到底是什么self是,当然取决于您所处的环境。例如,在模块或类定义主体中,它是模块或类本身。如果您使用单例类的全部目的是定义单例方法,那么实际上有一个快捷方式:deffoo.bar.下面是一个示例,说明如何使用

ruby-on-rails - Ruby:Class.new 在 Rails 控制台中给出 "Class not initialized"错误

我正在创建一个轻量级应用程序来创建和显示即将发生的事件的信息。我定义了一个Event类,它将args散列作为参数。初始化方法定义如下。classEvent到目前为止,还不错。然后,在Rails控制台中,我定义了一个args散列并尝试创建一个Event实例,但出现以下错误。[4]pry(main)>args={what:'what',theme:'theme'}=>{:what=>"what",:theme=>"theme"}[5]pry(main)>Event.new(args)=>#这看起来很简单,但我很难理解。任何帮助表示赞赏。 最佳答案

ruby-on-rails - 类 CommentsController 的父类(super class)不匹配(TypeError),重命名的最佳方法?

我今晚在部署时遇到了一些问题,我正在努力尽快解决这个问题我不知道为什么会这样。在本地一切正常,但在heroku上却不行。我在研究后尝试了各种不同的修复方法,但我可能不得不求助于完全重命名此类CommentsController(希望能奏效)。最好的方法是什么?我是Rails的新手,所以我需要一些帮助来正确地进行这些更改。这是CommentsController的样子,仅供引用:classCommentsController评论与每个帖子相关联(用户可以对帖子发表评论)。如果需要,我也会发布其他代码。这是来自heroku日志的错误2013-04-09T05:55:19.454545+00

ruby - Codecademy "converting between symbols and strings" ruby 类(class)

这些是Codecademy的说明:Wehaveanarrayofstringswe'dliketolateruseashashkeys,butwe'drathertheybesymbols.Createanewarray,symbols.Use.eachtoiterateoverthestringsarrayandconverteachstringtoasymbol,addingthosesymbolstosymbols.这是我写的代码(提供了strings数组):strings=["HTML","CSS","JavaScript","Python","Ruby"]symbols=[]

ruby - Ruby 的 "Open Classes"会破坏封装吗?

在Ruby中,程序员可以更改预定义的类。所以一个非常糟糕的程序员可能会做这样的事情:classStringdef==(other)returntrueendend显然,几乎没有人会这么蠢,但是对预定义类进行更细微的更改可能会导致已经运行的代码出现问题的想法在我看来违反了封装原则。四个问题:首先,这是否实际上违反了面向对象的封装原则?其次,作为一名程序员,有没有一种方法可以保证我正在使用类的未修改版本的代码?第三,我应该在我的代码中“打开”类吗?原因?最后,在大规模生产编码环境中如何处理这类事情?换句话说,编程行业的人真的用其他人的代码来做这件事吗?将使用?或者即使他们不这样做,你如何确