ruby-on-rails – 使用Rails constantize inflector调用命名空间
发布时间:2020-12-17 02:54:05 所属栏目:百科 来源:网络整理
导读:我有一个需要初始化的类,但它的命名空间如下: SomeThing::MyClass.new() 但是我在rake任务中从args中调用它,所以它以字符串形式出现: task :blah,[:my_class_name] = :environment do |t,args| class_name = args[:my_class_name].camelize.constantize pu
我有一个需要初始化的类,但它的命名空间如下:
SomeThing::MyClass.new() 但是我在rake任务中从args中调用它,所以它以字符串形式出现: task :blah,[:my_class_name] => :environment do |t,args| class_name = args[:my_class_name].camelize.constantize puts class_name end 很明显,如果我像这样调用rake任务: rake blah[my_class] 我的任务返回: MyClass # <= Actual ruby object 但是我怎样才能让它在另一个方法之前链接的命名空间内运行,如下所示: SomeThing::MyClass.new() 从作为输入提供的字符串? 解决方法
只需使用类名字符串并执行操作,即可让您的生活更轻松
Something.const_get(args[:my_class_name]).new 这是一个简化版本(普通IRB,没有Rails): module Something ; end class Something::MyClass ; end my_class_name = "MyClass" Something.const_get(my_class_name).new #=> #<Something::MyClass:0x007fa8c4122dd8> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- objective-c – 使用NSDictionary的EXC_BAD_ACCESS
- React with TypeScript 系列(四) --数据篇
- xcode – 在NSScrollView(Swift)中显示文本
- 如何使用JAXB在XML中为空elelemt生成结束标记
- swift2 – 如何在swift中为UILabel中的递增数设置动画
- 详解正则表达式匹配算法原理
- ruby-on-rails – 如何以可扩展的方式部署[Ruby on Rails]站
- ruby-on-rails – Rails复选框验证错误
- 是否有可能在数组中包含多个元素,而不是在编译时定义的数组
- 【react】---Immutable的基本使用