草庐IT

ruby - 类(类型)检查

是否有一个好的库(最好是gem)来对对象进行类检查?困难的部分是我不仅要检查一个简单对象的类型,还要进入数组或散列(如果有的话)内部,并检查其组件的类。例如,如果我有一个对象:object=["somestring",4732841,["anotherstring",{:some_symbol=>[1,2,3]}],]我希望能够检查各种级别的细节,如果存在类不匹配,那么我希望它以某种合理的方式返回位置。我还不清楚错误(类不匹配)的格式应该是怎样的,但是是这样的:object.class_check(Array)#=>nil(`nil`willmeantheclassmatches)ob

ruby - 向 Array 类添加新方法

我对Array对象有新的要求。所以我需要将我自己的方法添加到内置的Array类中。如何添加一个新方法,以便无论我创建什么Array对象,它也将拥有我的实例方法? 最佳答案 使用RubyOpenClasses:classArraydefmymethod#implementationendend 关于ruby-向Array类添加新方法,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1

ruby - 我们如何在不同的 Ruby 类之间复制单例方法?

我试图定义一个带有方法的类,以及一个缺少这些方法的类,然后允许后一个类的对象从前一个类的实例“学习”这些方法。这是我的尝试(Ruby1.9.2)-当我尝试更改lambda绑定(bind)中“self”的值时,它中断了(在注释为“BREAKS!”的行处)。如果您能想出如何解决这个问题-我很想知道。classSkillattr_accessor:nameattr_accessor:techniquedefinitialize(name,&technique_proc)@name=name@technique=lambda(&proc)endendclassPersonattr_access

ruby - 如何为字母、元音和辅音等德语字符类编写正则表达式?

例如,我设置了这些:L=/[a-z,A-Z,ßäüöÄÖÜ]/V=/[äöüÄÖÜaeiouAEIOU]/K=/[ßb-zBZ&&[^#{V}]]/因此/(#{K}#{V}{2})/匹配"azAZßäÜ"中的"ßäÜ"。有没有更好的方法来处理它们?我能否将这些常量放在我的Ruby安装文件夹中某个文件中的模块中,这样我就可以在我在计算机上编写的任何新脚本中包含/要求它们?(我是新手,我知道我混淆了这个术语;请纠正我。)此外,我能否只获取元字符\L、\V和\K(或任何尚未在Ruby中设置)以在正则表达式中代表它们,所以我不必一直做字符串插值? 最佳答案

ruby-on-rails - 使用 Rails 5 完成类(class)和模块分配给用户

编辑#2这是类(class)ControllerclassCoursesController编辑#1因此,根据下面Jagdeep的回答,我现在完成了以下操作:类(class).rbclassCoursecourse_modules_user.rbclassCourseModulesUsercourses_user.rbclassCoursesUser用户.rbclassUser迁移classCreateCoursesUsers但是,我遇到这样的错误原始问题所以这是previousquestion的延续,然而,这会偏离那个主题,所以这里是一个新的主题。在此之后,我大致得到了我想要开始工作

ruby-on-rails - Rake Task 特定类(class)在哪里生活? ( rails 3)

我有几个类仅由rake任务使用。我意识到rake任务通常存在于@lib/tasks/whatever.rake但我应该在哪里放置支持类?谢谢! 最佳答案 $RAILS_ROOT/lib或$RAILS_ROOT/lib/special_task/可能是最好的,因为它在默认加载路径中,您可以做一个简单的分别需要'my_task_helper'或require'special_task/helper'。 关于ruby-on-rails-RakeTask特定类(class)在哪里生活?(rail

ruby-on-rails - 如何将 "import"嵌套类放入 Ruby 中的当前类?

在Ruby中,我可以将模块/类嵌套到其他模块/类中。我想要的是在文件或类中添加一些声明,以便能够通过短名称引用嵌套类,例如使用Inner获取Outer::Inner,就像在Java、C#等中一样。语法可能是这样的:moduleOuterclassInner;endclassAnotherInner;endendclassCimportOuter:[:Inner,:AnotherInner]deffInnerendend简单的实现可能是这样的:classClassdefimport(constants)@imported_constants=(@imported_constants||{

ruby-on-rails - 是否有可能发现 Ruby on Rails 应用程序中未使用哪些类?

在我们的项目中,我们有一些“被遗忘的”类存在了很长一段时间。那些类已被其他类替代,但我们忘记删除它们。是否有一些自动化的方法/工具可以发现Ruby{onRails}应用程序中没有使用哪些类?谢谢! 最佳答案 这个问题已经被提出了很多次,但是最好的答案都在这里:FindunusedcodeinaRailsapp我个人喜欢日志解析:https://stackoverflow.com/a/14161807但在任何情况下,您都可以创建自己的记录器,扩展ActiveRecord::Base以创建一个观察器,该观察器将最常用的模块存储在数据库中

ruby - 元编程:如何发现对象的真实类?

我在用Ruby元编程开玩笑,我写了这段代码:classClassdef===(other)other.kind_of?(self)endendclassFakeClassdefinitialize(object)methods.each{|m|eval"undef#{m}"ifm.to_sym!=:methods}define=procdo|m|eval(这会创建一个模拟对象的假类。看:a=FakeClass.new(1)#=>1a.class#=>Fixnuma.methods#=>ReturnallFixnummethodsa+1#=>2(isnotaFakeClass)Fixnu

Ruby 命名空间与类还是模块?

考虑Ruby类Foo::Bar。惯例是将“Foo”命名空间作为一个模块,但它也可以很容易地作为一个类:moduleFoo;classBar;end;end对比:classFoo;classBar;end;end在第二种情况下,Bar不是Foo的内部类,它只是在Foo的单例上定义的另一个常量。在这两种情况下,父类(superclass)都是Object并且它们只包含Kernel模块。它们的祖先链是相同的。因此,除了您可以根据其类使用Foo进行的操作(如果是类则实例化,如果是模块则扩展/包含),命名空间的性质是否对有任何影响酒吧?是否有令人信服的理由选择其中一个名称间距而不是另一个?我看到