我发现在 Rails 应用程序编程中非常方便的一个技巧是class_eval可以用来动态创建方法。我现在开始进行测试,我想知道是否可以使用类似的想法来生成测试。
例如,我需要before_filter用户登录才能执行控制器中的所有操作。我想编写测试来确保将其before_filter应用于所有操作。我不想单独编写每个测试,而是想自动生成所有这些测试。
这种类型的测试是否可取,或者我应该坚持单独编写测试?如果是的话,人们会如何去做呢?
编辑:这可能看起来像:
actions = {:index => :get,:show => :get,:edit => :get,:update => :put}
actions.each_pair do |action,type|
class_eval(%Q{def test_user_required_for_#{action}
set_active_user users(:one)
#{type} :#{action}
assert flash[:error]
assert_redirected_to :action => :index
end
})
end
Run Code Online (Sandbox Code Playgroud)
既然人们已经验证了这可能有用,那么我应该在哪里放置这样的代码块,以便它只能执行一次来创建这些测试?
我找到了几个关于如何针对模式验证xml文档的来源,但我在ruby中有一个应用程序,我需要验证用户提供的模式本身是一个有效的模式.有没有办法可以检查这个?是否有XSD架构来验证XSD架构?或者是否有图书馆或宝石为我这样做?
我想在Django中构建一个无向图.我已经为节点类构建了一个带有两个外键(第一个,第二个)的边模型,但是与related_name存在冲突.我可以使用first_set和second_set,但由于图表是无向的,因此无论是喜欢还是来自它都无关紧要.处理这种情况的推荐方法是什么?
编辑:以下是我正在使用的模型:
class Node(models.Model):
#some irrelevant stuff
class Edge(models.Model):
#some other stuff
first = models.ForeignKey('Node',related_name=None)
second = models.ForeignKey('Node',related_name=None)
Run Code Online (Sandbox Code Playgroud)
我some_node.connected_nodes_set想要的是一个与RelatedManager有关的东西,类似于我使用related_names时为first_set或second_set设置的东西,除了它将具有单个可以到达的所有节点边缘,而不仅仅是那些可以在一个方向上到达的边缘.
Python似乎有许多不同的包可用于协助基于SMP的系统或群集上的并行处理.我有兴趣构建一个客户端服务器系统,其中服务器维护一个作业队列,客户端(本地或远程)连接并运行作业,直到队列为空.在上面列出的包中,建议使用哪些包?
编辑:特别是,我编写了一个模拟器,它接受了一些输入并处理了一段时间.我需要从模拟中收集足够的样本来估计用户指定的置信区间内的平均值.为了加快速度,我希望能够在许多不同的系统上运行模拟,每个系统都会以一定的间隔向服务器报告他们收集的样本.然后,服务器计算置信区间并确定客户端进程是否需要继续.收集到足够的样本后,服务器终止所有客户端模拟,根据过去的结果重新配置模拟,并重复这些过程.
由于需要客户端和服务器进程之间的相互通信,我质疑批量调度是否是一个可行的解决方案.对不起,我应该更清楚一点.
是否可以配置zsh以在选项卡完成期间扩展全局别名?例如,我有常见的别名:
alias -g '...'='../..'
alias -g '....'='../../..'
Run Code Online (Sandbox Code Playgroud)
但是当我输入时,例如,cd .../some<tab>它不会扩展为cd .../something或cd ../../something.因此,我经常不会使用这些方便的别名,因为它们与制表符完成不兼容.
随着我越来越习惯使用元编程技术,我发现越来越多的元编程应用程序.我现在在一个小项目中工作,我正在动态创建这些类的类和实例,我想知道我是否已经将元编程过度了?是否存在过多的元编程?如果是这样,人们在哪里划线?
我已经开始使用谷歌文档与其他人合作,他们不能/不会分解并学习我的标准vim/latex/git工作流程以进行编写和协作.谷歌有一个名为googlecl的命令行界面,允许你调用类似的东西:
$ googlecl docs edit --title "Some Document" --editor vim
Run Code Online (Sandbox Code Playgroud)
这允许我在vim中编辑我的谷歌文档.
我真正喜欢的是,如果我正在处理的文件是google docs文件,那么能够更改一些vim设置.这里最简单的例子是改变换行.有没有办法augroup为googlecl文档使用一种构造?这当然是可能的,还是这需要我在源头探索?