什么时候我应该使用Rails应用程序的规格和黄瓜(前rspec故事)?当然,我知道如何工作和积极使用规范.但使用黄瓜仍然感觉很奇怪.我目前对此的看法是,当您为客户端实现应用程序并且不了解整个系统应该如何工作时,使用Cucumber很方便.
但是,如果我正在做自己的项目呢?在大多数情况下,我知道系统的各个部分是如何相互作用的.我需要做的就是写一堆单元测试.那时我需要黄瓜的可能情况是什么?
并且,作为相应的第二个问题:如果我写黄瓜故事,我是否必须编写规范?难道不是同一件事的双重测试吗?
integration-testing unit-testing rspec cucumber rspec-stories
我有一个应该可供其他贡献者使用的分支,并且应该始终与主人保持同步.
不幸的是,每当我做'git rebase'然后尝试推动时,它会导致'非快速前进'信息和推动堕胎.推动这里的唯一方法是使用--force.这是否意味着如果我的分支公开并且其他人正在研究它,我应该使用'git merge'而不是rebased?
部署我的Rails应用程序时,我收到以下错误:
rake aborted!
ExecJS::ProgramError: Unexpected token punc «(», expected punc «:» (line: 15, col: 14, pos: 265)
Error
at new JS_Parse_Error (/tmp/execjs20150524-4411-1p45n63js:2359:10623)
at js_error (/tmp/execjs20150524-4411-1p45n63js:2359:10842)
at croak (/tmp/execjs20150524-4411-1p45n63js:2359:19086)
at token_error (/tmp/execjs20150524-4411-1p45n63js:2359:19223)
at expect_token (/tmp/execjs20150524-4411-1p45n63js:2359:19446)
at expect (/tmp/execjs20150524-4411-1p45n63js:2359:19584)
at /tmp/execjs20150524-4411-1p45n63js:2359:28513
at /tmp/execjs20150524-4411-1p45n63js:2359:19957
at expr_atom (/tmp/execjs20150524-4411-1p45n63js:2359:27269)
at maybe_unary (/tmp/execjs20150524-4411-1p45n63js:2359:30019)new JS_Parse_Error ((execjs):2359:10623)
js_error ((execjs):2359:10842)
croak ((execjs):2359:19086)
token_error ((execjs):2359:19223)
expect_token ((execjs):2359:19446)
expect ((execjs):2359:19584)
(execjs):2359:28513
(execjs):2359:19957
expr_atom ((execjs):2359:27269)
maybe_unary ((execjs):2359:30019)
Run Code Online (Sandbox Code Playgroud)
有问题的文件是有效的,它适用于localhost.我也试过rake assests:precompile在localhost上运行,一切都通过了.最后,我试图从文件中删除内容,git push和redeploy - 仍然得到相同的错误.只有完全删除文件并重新部署帮助.
会欣赏任何想法.
我只是不知道,有什么技术原因吗?为弱键入的语言实现编译器是否更难?它是什么?
compiler-construction programming-languages interpreted-language
我试图file通过jQuery.Form插件提交一个带有字段的表单,这里是代码:
$('form').ajaxSubmit({
url: "/path",
dataType: "json",
contentType: "multipart/form-data"
...
Run Code Online (Sandbox Code Playgroud)
然后服务器返回json作为响应.在除IE之外的所有浏览器中都很好用,它试图将响应下载为文件.如果我从表单中删除文件字段,它也可以正常工作.
我在这里和谷歌已经看到了各种解决方案,基本上几乎尝试了所有描述的内容,包括enctype通过jQuery 设置表单,但它没有用.
任何建议都会受到欢迎.
所以我正在写一个小宝石,我有一个'/ tasks'目录,里面有一些特定的rake任务.如何在需要宝石的地方自动提供这些任务?例如,我希望在安装gem之后可以在rails root目录中运行'rake mygemrake:task'.
我在文档中找不到这个.我发现的只是一种after_sign_in_path_for方法.我想要的是这样的东西,sign_in_path_for(:account)所以我不必硬编码"/ account/sign_in"路径.如果Devise有这样的事情,任何想法?
我在我的控制器中有这个:
params.require(:item).permit!
Run Code Online (Sandbox Code Playgroud)
让我们假设这个rspec规范:
put :update, id: @item.id, item: { name: "new name" }
Run Code Online (Sandbox Code Playgroud)
它按预期工作,没有错误.但是,如果我使用这个:
put :update, id: @item.id, item: nil
Run Code Online (Sandbox Code Playgroud)
我得到ActionController::ParameterMissing了我不想得到的东西.它与我用于其他操作的控制器宏有关,通过它我无法控制被发送的参数(宏检查用户凭据,因此我并不真正关心实际测试#update操作,而是我只测试before_filters for它).
所以我的问题是:如果它存在的话,如何在其中制作params[:item]可选但仍然过滤的属性?
这个任务似乎很简单:如何在xml文档中包含一个Javascript文件,以便至少Opera和Firefox可以实际解析它并执行代码?
你能解释一下构造函数中的设置方法和原型对象之间的区别吗?下面的代码显示设置方法的这两种方式- say_hello而且say_bye都很好地工作:
function MessageClass() {
this.say_bye = function() { alert('see ya'); };
}
MessageClass.prototype.say_hello = function() { alert('hello'); };
x = new MessageClass();
x.say_hello();
x.say_bye();
Run Code Online (Sandbox Code Playgroud) javascript ×3
git ×2
ruby ×2
ajax ×1
constructor ×1
cucumber ×1
deployment ×1
devise ×1
execjs ×1
jqueryform ×1
json ×1
merge ×1
prototype ×1
rake ×1
rebase ×1
rspec ×1
unit-testing ×1
xml ×1