我想提高测试的速度.
use_transactional_fixtures或使用database_cleaner宝石吗?:truncation到:transaction我的800多个例子后运行速度快了4倍!use_transactional_fixtures我使用database_cleaner时应该关闭:transaction吗?:transaction吗?:transaction来:truncation使用硒或当akephalos?PS Mysql,Rails 3,Rspec2,Cucumber
PPS我知道spork和parallel_test并使用它们.但他们是偏离主义的.例如,叉勺节省整个套件运行约15-20秒,而从改变:transaction到:truncation显着增加从3.5到13.5分钟(10分钟差)运行时间.
虽然我在数据库中总体上喜欢区分大小写,但有几次我觉得很痛苦.user_name和email是我不想担心的字段的好例子 - 特别是在搜索时.
在使用以下内容保存之前,可以轻松地将字符串置为字符串:
before_save做self.email.downcase!结束
这样,user_name和电子邮件始终以小写形式保存.但是find_by_user_name和find_by_email的最佳方法是什么?我当然可以记得总是将我传递给那些方法的字符串 - 但这看起来不是很干.
我曾经考虑过覆盖find_by_email,并且在我降低电子邮件的情况下用super调用原始版本,但我没有任何运气可以搞清楚.
那么,最好的方法是什么?
PS我不认为像这样的相关帖子(如何为Rails 3编写不区分大小写的find_by_email)正试图解决同样的问题.这里带有"lower"的自定义sql对我来说是无用的,因为我已经确保所有这些值都更低 - 它是现在进入的(可能来自用户输入它的表单),我需要下载.
在我的rails 3 app中它有:
//= require jquery
//= require jquery_ujs
//= require_tree .
//= require jquery-ui
Run Code Online (Sandbox Code Playgroud)
它工作正常.但我不明白它是如何工作的.我想我理解第三行,我认为这个文件的所有内容都添加到与该文件相同的目录中的文件(/ app/assets/javascript).但是第一线怎么样?它在哪里获取jquery文件?我没有在文件开头的注释中提到的任何目录中看到它,具体来说:
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
Run Code Online (Sandbox Code Playgroud)
rails去哪里获取jquery javascript文件?
在尝试测试某些登录/注销功能时,我想从会话中删除一些信息.我发现我根本无法访问会话.我一直得到错误:nil的未定义方法`session':NilClass.
但令我惊讶的是,我发现我可以从其他rspec页面访问会话.其他详细信息如下.我的问题是:为什么我可以从某些文件而不是其他文件访问会话?我怎样才能在下面的第二个例子中访问会话?
详细信息文件:spec/controllers/tenants_controller_spec.rb
require 'spec_helper'
describe TenantsController do
specify { session[:tag].should == 'abc' }
end
Run Code Online (Sandbox Code Playgroud)
文件:spec/requests/test.rb
require 'spec_helper'
describe 'Test' do
specify { session[:tag].should == 'abc' }
end
Run Code Online (Sandbox Code Playgroud)
当我通过rspec运行第一个文件时,我得到:
Failure/Error: specify { session[:tag].should == 'abc' }
expected: "abc"
got: nil (using ==)
Run Code Online (Sandbox Code Playgroud)
这很好.这应该是失败的原因.
但是,当我运行第二个文件时,我得到:
Failure/Error: specify { session[:tag].should == 'abc' }
NoMethodError:
undefined method `session' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
那么为什么会话是一个未定义的方法呢?
我在Ubuntu中运行rails3并使用gedit进行编码.我正在使用RVM.要查看我尝试的gem源代码:bundle open jquery-rails
这不起作用,因为我没有设置编辑器.将gedit设置为编辑器后仍然无法正常工作,因为gedit无法传递目录.我想这只适用于文件.太糟糕了 :(.
nathan.f77对这个问题的回答(在Rails3应用程序中打包的Lookup Gem或插件代码)似乎很有希望,但我无法按照他的指示行事.他们缺乏足够的细节.
什么是浏览我在rails3应用程序中使用的宝石的源文件的一种非常简单的方法?
我的理解是,可以在JavaScript中使用两种方法中的任何一种用于不区分大小写的基于正则表达式的匹配:match(/pattern/i)或match("pattern","i").我没有让第二种变体在Chrome中运行.(我正在使用Chromium 14.0.835.202).这是Chrome中的错误吗?(或用户错误?)
在Firefox中,当我运行此代码时,我得到:Hello World,然后是Hello World.在Chrome中,我得到了Hello World,未定义.
<html>
<head>
</head>
<body>
<input type="button" id="button" value="Click me!" onclick="buttonClick()" />
</body>
<script language="javascript">
function buttonClick()
{
str="Hello World"
alert(str.match(/hello world/i))
alert(str.match("hello world","i"))
}
</script>
</html>
Run Code Online (Sandbox Code Playgroud) javascript ×2
rspec ×2
activerecord ×1
cucumber ×1
database ×1
find ×1
gedit ×1
match ×1
performance ×1
regex ×1
require ×1
session ×1
ubuntu ×1