草庐IT

class_window_instance

全部标签

ruby - `class_eval` 字符串中的变量范围是什么?

我正在使用class_eval编写要在当前类的上下文中执行的代码。在下面的代码中,我想为属性值的变化添加一个计数器。classClassdefattr_count(attr_name)attr_name=attr_name.to_sattr_readerattr_name#createtheattribute'sgetterclass_eval%Q{@count=0def#{attr_name}=(attr_name)@attr_name=attr_name@count+=1enddef#{attr_name}@attr_nameend}endendclassFooattr_count

ruby - "Interfaces & Abstract Classes unnecessary in Ruby"--> 谁能解释一下?

我正试图全神贯注于Ruby,而我正在努力解决的一件事是缺乏接口(interface)/抽象类支持。通过谷歌搜索,我不断看到与抽象类相关的Ruby问题的响应是“你在用Java思考。Ruby不能那样工作”那么,如果没有接口(interface)/抽象类,如何在Ruby中工作呢?例如,在Java中我可能会创建一个抽象类“book”,其子类为“novel”、“textbook”和“journal”。我在“书”中加入了很多常用功能,但我不希望它可以直接访问-书必须是小说、教科书或期刊。在ruby​​中,我该如何写出那种功能? 最佳答案 我也是

ruby-on-rails - 错误 "' Validate_default_type !': An option' s default must match its type (ArgumentError)"when running Ruby on Rails generate on Windows

我正在关注thistutorial并且刚刚开始。我已经使用geminstallrails安装了RubyonRails,并使用railsnewblog创建了一个博客。教程现在说我需要运行railsgeneratecontrollerWelcomeindex,但是当我这样做时,我得到了这个错误:C:/Ruby22/lib/ruby/gems/2.2.0/gems/thor-0.19.2/lib/thor/parser/option.rb:130:in`validate_default_type!':Anoption'sdefaultmustmatchitstype.(ArgumentErr

ruby-on-rails - 切换到 Rails 4.1 时出现错误 - `method_missing':ActiveRecord::Base:Class (NoMethodError) 的未定义方法 `whitelist_attributes='

从Rails4.0切换到Rails4.1时出现此错误:activerecord-4.1.8/lib/active_record/dynamic_matchers.rb:26:in`method_missing':undefinedmethod`whitelist_attributes='forActiveRecord::Base:Class(NoMethodError)我没有在我的应用程序的任何地方使用attr_accessible或attr_protected所以我想知道为什么我有问题。当迁移到Rails4.0时,我已经安装了我的application.rb:配置/应用程序.rb:c

ruby-on-rails - "class << self"在 Rails 中是什么意思?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicates:classCansomeonepleaseexplainclass我想知道class是什么意思声明在模型类中意味着什么?它里面的语句和外面的语句有什么不同。例如:classPost什么是class什么意思?方法search(q)之间有什么区别?和search2(qq)?

ruby - 获取名称错误 : `format' is not allowed as an instance variable name when testing instance variable with rspec

我有以下测试:let(:client){Descat::Client.new}describe'poblacio'doit'shouldsetformatcorrectly'doclient.poblacio('v1','json','dades')expect(client.instance_variable_get(:format)).toeq('json')endend我有以下正在测试的代码:moduleDescatclassClientBASE_URL='http://api.idescat.cat/'definitialize(attributes={})attributes

Ruby 单例方法 (class_eval, define_method) vs (instance_eval, define_method)

Ruby中的元编程很棒,因为我经常使用它来模拟基于原型(prototype)的编程,并快速编写一些问题的原型(prototype)解决方案来测试它们的可行性。所以我想知道下面这段代码是否有本质区别:(class和(class代码的两个版本都定义了一个单例方法,我还没有遇到任何迫使我选择(instance_eval,define_method)组合而不是(class_eval,define_method)组合来定义单例方法,我想知道两者之间是否存在一些本质区别。 最佳答案 define_method没有区别。但是当您使用def时会有所

ruby-on-rails - 从父类(super class)调用子类方法

前言:这是在Rails应用程序的上下文中。然而,这个问题是特定于Ruby的。假设我有一个Media对象。classMedia我在几个子类中扩展了它:classImage在Media类中,我想从适当的子类中调用show的实现。因此,对于Media,如果self是一个Video,那么它将调用Video的show方法。如果self是Image,它将调用Image的show方法。我有Java背景,首先想到的是“在父类(superclass)中创建一个抽象方法”。但是,我在多个地方(包括StackOverflow)读到抽象方法并不是在Ruby中处理此问题的最佳方式。考虑到这一点,我开始了rese

ruby-on-rails - Ruby 1.9.2 如何在 Windows 上安装 RMagick?

我目前正在升级一个旧的Rails应用程序以使用Rails3和Ruby1.9.2,而RMagick是我需要安装的最后一个gem。然而,似乎没有任何适用于Windows的1.9.2下载,标准的gem安装RMagick也不起作用。有人能为我指出正确的方向来安装这个gem吗? 最佳答案 我刚刚使用Rubyv1.9.x在Windows上成功安装了RMagick2.13.1!在我忘记之前,让我把程序说出来。安装开发工具包:https://github.com/oneclick/rubyinstaller/wiki/Development-Kit

ruby - 全新安装 OSX 10.9.1 在尝试安装 gems 时返回 "undefined method ` path2class'"

我刚刚使用Homebrew和RVM安装了一个干净的Mavericks安装。brewdoctor和rvmrequirements都返回“allgood”,但是,当我在我的项目目录中运行bundleinstall时,我的大多数gem安装都很好,但少数安装失败并出现相同的以下错误:Bundler::GemspecError:Couldnotreadgemat/Users/NK/.rvm/gems/ruby-2.0.0-p353/cache/eventmachine-1.0.3.gem.Itmaybecorrupted.Anerroroccurredwhileinstallingeventma