草庐IT

character-class

全部标签

ruby-on-rails - 动态类加载 : Is there a "method_missing" for classes in Ruby?

在我正在处理的Rails应用程序中,我有一个与单表继承模型“Node”相关的模型“Type”:Node的任何可能的子类都被定义为类型表中的一个Type。现在可以在初始化程序中加载所有类,但我想仅在需要时加载子类。我能想到的最佳解决方案是回退到一个未初始化的常量上,该常量将检查该常量是否可以代表应用程序中的一个类,类似于method_missing所做的事情。我想要一些关于如何以及在何处定义此逻辑的建议,或者是否有更好的解决方案。 最佳答案 我不知道这是否是新的,但我认为它值得添加。可以将缺少的方法用作类方法classExampled

ruby - 正则表达式 : Any characters except sequence

[^abc]Anysinglecharacterexcept:a,b,orc但是我如何为除序列abc之外的任何字符制作正则表达式所以,类似的东西"Helloabcawesomeworld".scan/[^(abc)]+/将返回“Hello”和“awesomeworld”。PS:而且不是分割字符串 最佳答案 这叫做lookaround,在您的情况下,您需要使用负前瞻。我不确定Ruby中的确切语法,但(?!abc)中的某些内容可能会起作用。请注意,lookaround不会消耗任何输入,因此您需要在其后跟任何您想要匹配的模式。也许(?:(

ruby-on-rails - ruby /rails : Reopening vs Overwriting a Class

我想向Rails模型添加一个方法,用于测试。如果我这样做classModeldefsomething_newdo_somethingendend在Rails控制台或在运行时加载的文件中,模型被覆盖而不是被修改。如果我在上面的行之前放置类似v=Model.class的内容,新方法将成功添加到现有类中。显然需要引用来表示现有类(class)正在重新开放。另一方面,可以向Fixnum添加一个方法,而无需首先引用它。这是怎么回事,确保现有类被重新打开和修改而不是被覆盖的通常方法是什么?谢谢。 最佳答案 听起来你在使用它之前不需要这个类。当您

ruby - 是否可以让 class.property = x 返回 x 以外的东西?

假设我有一个Ruby类:classMyClassdefself.propertyreturn"someVal"enddefself.property=(newVal)#dosomethingtoset"property"success=truereturnsuccess#successisabooleanendend如果我尝试执行MyClass.property=x,整个语句的返回值始终是x。许多基于C/受启发的语言都习惯于返回bool“成功”值-是否可以使用Ruby中的“等于语法”为setter执行此操作?此外-如果这不可能,为什么不呢?允许“equalssetter”操作返回一个值

ruby-on-rails - rails : How to test if an attribute of a class object is required in the model policy?

简单地说,我有一个模型用户,其中包含名称、电子邮件和评论作为属性。validates_presence_of:namevalidates_presence_of:email所以“姓名”和“电子邮件”是必需的,但不是“评论”。my_user=User.new我想找到一种方法来测试像my_user.name.required?或User.name.required?类似的东西。我的目标是创建一个表单,并根据该项目是否设置为“validates_presence_of”,将特定类动态添加到表单项目span或td我试图搜索它,但没有找到任何相关信息。有没有简单的方法可以做到这一点?谢谢

ruby - ruby 对象模型的良好解释——主要是 'classes are objects'?

正在研究ruby对象模型,有一些疑问。我理解对象只存储实例变量,方法存储在对象引用的类中的想法。我也理解“self”的概念——它是什么,它如何变化等等。但是,我不明白“类是对象”这一概念。哪里有好的、直观的解释吗?(顺便说一句:我正在使用RubyObjectModelandMetaprogramming和MetaprogrammingRuby作为我的两个资源。如果有人可以提出其他建议,那将会很有帮助。)谢谢。 最佳答案 顾名思义,类就是对象。具体来说,它们是Class类的实例,它本身是Module类的子类,而后者又是Object的子

ruby - Rubocop 错误 'Class definition is too long ruby'

我收到rubocop错误“类定义太长。[236/100]'。我的类(class)如下所示:classSomeClassNameincludeHelperModuleattr_accessor:aaa,:bbb,:ccc....methods.....end可能会出现什么问题?rubocop文档ClassLength说“一个类(class)的长度超过了某个最大值”。什么意思? 最佳答案 是的,这是因为rubucop认为整体线路太多。我同意类(class)不应该太长,但认为最终应该由以下因素决定:类(class)是否有单一职责,方法是否

ruby - 为什么 Ruby/[[ :punct:]]/miss some punctuation characters?

ruby/[[:punct:]]/应该匹配所有“标点字符”。根据Wikipedia,这意味着/[\]\[!"#$%&'()*+,./:;?@\^_`{|}~-]/根据POSIX标准。匹配:-[]\;',./!@#%&*()_{}::"?.但是,它不匹配:=`~$^+|(至少在ruby​​1.9.3p194中是这样)。什么给了? 最佳答案 标点字符类由语言环境定义。公开组LC_TYPEdefinitionforpunct说:Definecharacterstobeclassifiedaspunctuationcharacters.In

ruby - alias_method 和 class_methods 不混合?

我一直在尝试修补全局缓存模块,但我不明白为什么它不起作用。有人有什么建议吗?这是错误:NameError:undefinedmethod`get'formodule`Cache'from(irb):21:in`alias_method'...由此代码生成:moduleCachedefself.getputs"original"endendmoduleCachedefself.get_modifiedputs"Newget"endenddefpeek_a_booCache.module_evaldo#make:get_not_modifiedalias_method:get_not_mo

ruby-on-rails - Capistrano::Configuration:Class 的未定义方法 `instance'

我正在尝试在Rails应用程序中首次启动并运行Capistrano。我有一台运行Ubuntu12.04、nginx、unicorn和rails的linux服务器,但是,我似乎遇到了一些问题。我还使用RVM使用Capistrano3.0.0、rails3.2.14、bundler1.4.0和ruby​​1.9.3p448。我只设置了一个生产阶段,此时我只关心Capistrano与我的服务器通信并从github推送我的代码(目前还没有迁移和捆绑等)。当我使用下面的设置尝试命令capproductiondeploy:check或capproductiondeploy:setup(这似乎已被弃