我有一个声明了许多实例方法的模块
module UsefulThings
def get_file; ...
def delete_file; ...
def format_text(x); ...
end
Run Code Online (Sandbox Code Playgroud)
我想从一个类中调用其中的一些方法.你通常如何在ruby中这样做是这样的:
class UsefulWorker
include UsefulThings
def do_work
format_text("abc")
...
end
end
Run Code Online (Sandbox Code Playgroud)
include UsefulThings从中引入所有方法UsefulThings.在这种情况下,我只想要format_text并明确地不想get_file和delete_file.
我可以看到几个可能的解决方案:
Usefulthings并且只引入一些方法
UsefulThings在其中,然后委托format_text给该代理实例
为什么单个模块中有很多不相关的功能?它ApplicationHelper来自一个rails应用程序,我们的团队事实上决定将其作为任何其他地方不具备的特定任何东西的倾倒场.大多数独立的实用程序方法随处可见.我可以将它分解成单独的助手,但是它们中有30个,每个都有1个方法......这似乎没有效果
使用Ruby将CSV文件读入数组很容易,但是我找不到有关如何将数组写入CSV文件的任何好文档.谁能告诉我怎么做?
如果重要的话,我正在使用Ruby 1.9.2.
在rspec中测试模块的最佳实践是什么?我有一些模块包含在少数模型中,现在我只是对每个模型进行了重复测试(差异很小).有没有办法让它干涸?
鉴于:
a1 = [5, 1, 6, 14, 2, 8]
Run Code Online (Sandbox Code Playgroud)
我想确定它是否包含以下所有元素:
a2 = [2, 6, 15]
Run Code Online (Sandbox Code Playgroud)
在这种情况下,结果是false.
是否有任何内置的Ruby/Rails方法来识别这种数组包含?
实现此目的的一种方法是:
a2.index{ |x| !a1.include?(x) }.nil?
Run Code Online (Sandbox Code Playgroud)
有更好,更可读的方式吗?
在Mac OS X 10.7.4上使用最新的ZSH和RVM时,ZSH抱怨这个:
__rvm_cleanse_variables: function definition file not found
鉴于Ruby代码
line = "first_name=mickey;last_name=mouse;country=usa"
record = Hash[*line.split(/=|;/)]
Run Code Online (Sandbox Code Playgroud)
除了*操作员之外,我理解第二行中的所有内容 - 它在做什么以及文档在哪里?(正如你可能猜到的那样,寻找这个案子很难......)
我的Rails视图和控制器上到处是redirect_to,link_to和form_for方法调用.有时link_to并且redirect_to在它们链接的路径中是明确的(例如link_to 'New Person', new_person_path),但很多时候路径是隐式的(例如link_to 'Show', person).
我将一些单表继承(STI)添加到我的模型中(比方说Employee < Person),并且所有这些方法都会破坏子类的实例(比如说Employee); 当rails执行时link_to @person,它会出错undefined method employee_path' for #<#<Class:0x000001022bcd40>:0x0000010226d038>.Rails正在寻找由对象的类名定义的路由,即雇员.这些员工路线未定义,并且没有员工控制器,因此也未定义操作.
之前已经问过这个问题:
routes.rb将子类资源映射到父类(map.resources :employees, :controller => 'people').在同一个SO问题中的最佳答案建议使用代码库中的每个实例对象进行类型转换.becomesroutes.rb,因为只有抓住从路由断裂link_to和redirect_to,但不从form_for.所以他建议在父类中添加一个方法,让子类对它们的类撒谎.听起来不错,但他的方法给了我错误undefined …是否有比下面更好的方法来检查字符串是否为零或在Ruby中长度为0?
if !my_string || my_string.length == 0
return true
else
return false
end
Run Code Online (Sandbox Code Playgroud)
在C#中有方便的
string.IsNullOrEmpty(myString)
Run Code Online (Sandbox Code Playgroud)
有类似于Ruby的东西吗?