草庐IT

module-list

全部标签

ruby - 基本元编程 : extending an existing class using a module?

我希望我的模块的一部分能够扩展String类。这行不通moduleMyModuleclassStringdefexclaimselfNoMethodError但这样做moduleMyModuledefexclaimself"thisisastring!!!!!"我不希望MyModule的所有其他功能都被String束缚。在最高级别再次包含它似乎很丑陋。当然有更简洁的方法来做到这一点? 最佳答案 exclaim第一个示例中的方法是在一个名为MyModule::String的类中定义的,与标准无关String类(class)。在您的模块

ruby - “运行失败跳转到方法定义”错误 : undefined method `current_line' for TextMate:Module

更新:我想通了。Ctrl-F仅在未选择我正在搜索的方法时有效。游标只需要在方法名中。我刚升级到TextMate2。当我选择一个方法并使用Ctrl+F转到它的定义时,我得到:>FailurerunningJumptoMethodDefinition这是痕迹:/Users/ilikepie/Library/ApplicationSupport/TextMate/Managed/Bundles/RubyonRails.tmbundle/Support/lib/rails/text_mate.rb:54:in`method_missing':undefinedmethod`current_li

ruby-on-rails - Ruby Net::FTP,从 ftp.list() 中提取文件名

我正在使用以下代码尝试使用Ruby从ftp获取所有文件。files=ftp.list()files.eachdo|file|ftp.gettextfile(file)end问题是ftp.list返回整行信息,而不仅仅是文件名,例如-rw-r--r--1ftpftp0May3111:18brett.txt如何从这个字符串中提取文件名?非常感谢 最佳答案 您可以使用nlst像这样的公共(public)方法files=ftp.nlst("*.zip")|ftp.nlst("*.txt")|ftp.nlst("*.xml")#optiona

ruby - FactoryGirl create_list 传入多个值

如果我有这个工厂:factory:product,class:Productdoname{Faker::Commerce.product_name}description{Faker::Lorem.paragraph}price{Faker::Number.number(3)}end我可以使用create_list创建2个这样的产品:FactoryGirl.create_list(:product,2)但我想将默认值传递给我的两个产品,我会假设理论上是这样的吗?prods=[{:name=>"Product1"},{:name=>"Product2"}]FactoryGirl.crea

ruby - Class.superclass = 模块,Module.class = 类?

这是如何计算的?是圆形的更新:(在irb中)Class.superclass=ModuleModule.class=Class当Class是Modules的下类时,怎么可能说Module的类是Class?它是圆形的,先有鸡还是先有蛋。对象:同样的问题:对象是对象模型中的根对象。它的类怎么可能是Class,因为Class对象还不存在呢? 最佳答案 我们来看一下MRI源码的class.c文件:voidInit_class_hierarchy(void){id_attached=rb_intern("__attached__");rb_c

ruby - 使用 "::"而不是 "module ..."用于 Ruby 命名空间

在Ruby中,编写classFoo::Bar和编写moduleFoo有区别吗?类Bar用于命名空间?如果是,是什么? 最佳答案 如果你使用classFoo::Bar,但是Foo模块还没有被定义,一个异常将会被抛出,而moduleFoo;如果尚未定义,类Bar方法将定义Foo。此外,使用block格式,您可以在以下范围内定义多个类:moduleFooclassBar;endclassBaz;endend 关于ruby-使用"::"而不是"module..."用于Ruby命名空间,我们在St

ruby - 为什么没有 Module.method_defined?(:method) work correctly?

我正在尝试使用Module.method_defined?(:method)检查模块中是否定义了方法,它返回false,应该返回true。moduleSomethingdefself.another1endendSomething.methods列出了“另一个”,但Something.method_defined?(:another)返回false。这可能不起作用,因为该方法是在self上定义的吗?如果是这种情况,除了使用method_defined?之外,还有其他方法可以检查模块上是否定义了方法吗? 最佳答案 要知道模块是否有模块

ruby - 我在 "gem list"中看到 gem 但有 "no such file to load"

我在Ubuntu10上sudoapt-getinstallruby1.9.1-full然后下载rubygem1.3.7的源码并安装sudorubysetup.rb然后,例如,安装sinatrasudogeminstallsinatra最后打开irb并输入require"rubygems"require"sinatra"得到错误LoadError:nosuchfiletoload--sinatrafrom(irb):2:in`require'from(irb):2from/usr/bin/irb:12:in`' 最佳答案 我正好遇到了

ruby-on-rails - rails : dynamically define class method based on parent class name within module/concern

我想根据包含此Mixin的类名在Mixin中动态生成一个类方法。这是我当前的代码:moduleMyModuleextendActiveSupport::Concern#defsome_methods#...#endmoduleClassMethods#HereiswhereI'mstuck...define_method"#{self.name.downcase}_status"do#dosomething...endendendclassMyClass但这给了我以下方法名称:MyClass.mymodule::classmethods_status在方法定义中获取基类名称是可行的(s

ruby-on-rails - rails : Only allow admin user to create new users in Rails with Devise (No external modules)

目前,我的Users数据库有一个名为“admin”的列,其值为bool值,默认设置为false。我有一个管理员用户播种到数据库中。如何编写我的应用程序以便是管理员的用户可以创建新用户,而不是的用户不能?(此外,用户应该仅由管理员创建)似乎应该有一种简单的方法可以在不涉及使用某些外部模块的设计中做到这一点。然而,到目前为止,我还没有找到满意的答案。我更有可能标记仅是设计的解决方案。(一个简单的标准MVC/Rails解决方案加分)但是,如果真的有更好的方法来做到这一点而不涉及CanCan,我可能也接受它。注意:我已经搜索了一段时间,发现了其他几个与这个问题非常相似的stackoverflo