- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
所以我遇到了一个奇怪的问题。我为运行 linux 的 CI 服务器设置了自定义 Rails 环境。环境加载正确,测试确实在 CI 服务器上运行,但前提是我使用 bundle exec rspec
而不是 bundle exec rake spec
或 运行它们 bundle 执行 rake
。
当测试没有运行时,它们仍然返回退出代码 0,并且 CI 服务器假定构建成功,即使理论上构建可能被破坏。
相同的行为发生在我运行 OS X 的机器上。
这是一个包含所有不同测试用例的控制台 session ,以更好地说明正在发生的事情。
~/myapp $ rake
/Users/io/.rvm/rubies/ruby-2.2.0/bin/ruby -I/Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.3.2/lib:/Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-support-3.3.0/lib /Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.3.2/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb
...............................................
Finished in 4.34 seconds (files took 3.1 seconds to load)
47 examples, 0 failures
# -----
~/myapp $ rake spec
/Users/io/.rvm/rubies/ruby-2.2.0/bin/ruby -I/Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.3.2/lib:/Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-support-3.3.0/lib /Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.3.2/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb
...............................................
Finished in 3.8 seconds (files took 3.36 seconds to load)
47 examples, 0 failures
# -----
~/myapp $ rspec
...............................................
Finished in 3.87 seconds (files took 2.98 seconds to load)
47 examples, 0 failures
# -----
~/myapp $ bundle exec rake
/Users/io/.rvm/rubies/ruby-2.2.0/bin/ruby -I/Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.3.2/lib:/Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-support-3.3.0/lib /Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.3.2/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb
...............................................
Finished in 3.9 seconds (files took 3.03 seconds to load)
47 examples, 0 failures
# -----
~/myapp $ bundle exec rake spec
/Users/io/.rvm/rubies/ruby-2.2.0/bin/ruby -I/Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.3.2/lib:/Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-support-3.3.0/lib /Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.3.2/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb
...............................................
Finished in 3.64 seconds (files took 2.97 seconds to load)
47 examples, 0 failures
# -----
~/myapp $ bundle exec rspec
...............................................
Finished in 3.75 seconds (files took 2.95 seconds to load)
47 examples, 0 failures
一切正常
~/myapp $ RAILS_ENV=test rake
/Users/io/.rvm/rubies/ruby-2.2.0/bin/ruby -I/Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.3.2/lib:/Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-support-3.3.0/lib /Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.3.2/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb
...............................................
Finished in 3.86 seconds (files took 3.07 seconds to load)
47 examples, 0 failures
# -----
~/myapp $ RAILS_ENV=test rake spec
/Users/io/.rvm/rubies/ruby-2.2.0/bin/ruby -I/Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.3.2/lib:/Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-support-3.3.0/lib /Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.3.2/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb
...............................................
Finished in 3.9 seconds (files took 3.02 seconds to load)
47 examples, 0 failures
# -----
~/myapp $ RAILS_ENV=test rspec
...............................................
Finished in 3.82 seconds (files took 2.98 seconds to load)
47 examples, 0 failures
# -----
~/myapp $ RAILS_ENV=test bundle exec rake
/Users/io/.rvm/rubies/ruby-2.2.0/bin/ruby -I/Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.3.2/lib:/Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-support-3.3.0/lib /Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.3.2/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb
...............................................
Finished in 3.76 seconds (files took 2.91 seconds to load)
47 examples, 0 failures
# ------
~/myapp $ RAILS_ENV=test bundle exec rake spec
/Users/io/.rvm/rubies/ruby-2.2.0/bin/ruby -I/Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.3.2/lib:/Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-support-3.3.0/lib /Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.3.2/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb
...............................................
Finished in 3.83 seconds (files took 2.99 seconds to load)
47 examples, 0 failures
# -----
~/myapp $ RAILS_ENV=test bundle exec rspec
...............................................
Finished in 3.83 seconds (files took 3.11 seconds to load)
47 examples, 0 failures
再一次,一切都很好,花花公子。
~/myapp $ RAILS_ENV=ci rake
/Users/io/.rvm/rubies/ruby-2.2.0/bin/ruby -I/Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.3.2/lib:/Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-support-3.3.0/lib /Users/io/.rvm/gems/ruby-2.2.0/gems/rspec-core-3.3.2/exe/rspec --pattern spec/\*\*\{,/\*/\*\*\}/\*_spec.rb
...............................................
Finished in 3.73 seconds (files took 3.03 seconds to load)
47 examples, 0 failures
# -----
~/myapp $ RAILS_ENV=ci rake spec
# No output, just a brief pause and back to shell prompt
~/myapp $ RAILS_ENV=ci rspec
...............................................
Finished in 7.82 seconds (files took 2.96 seconds to load)
47 examples, 0 failures
# -----
~/myapp $ RAILS_ENV=ci bundle exec rake
# No output, just a brief pause and back to shell prompt
~/myapp $ RAILS_ENV=ci bundle exec rake spec
# No output, just a brief pause and back to shell prompt
~/myapp $ RAILS_ENV=ci bundle exec rspec
...............................................
Finished in 7.77 seconds (files took 2.8 seconds to load)
47 examples, 0 failures
由于 CI 服务器设置的性质,我必须在 bundle exec
中运行测试。但令我感到困惑的是,在我的机器上 RAILS_ENV=ci rake
可以完美运行,而 RAILS_ENV=ci rake spec
却无法运行。
但是当我将它们包装在 bundle exec
中时,rake
和 rake spec
都不会在 RAILS_ENV=ci
中运行但是 bundle exec rspec
工作正常。
有人能解释一下这是怎么回事吗?我找不到一种方法使它具有任何逻辑意义。我是否偶然发现了 Rails 的 rake 任务中的错误?
编辑:回应haradwaith's answer :你提出了一些非常好的观点,第一点是正确的(它直接运行 rspec 可执行文件),但我不能说你的回答充分解释了正在发生的事情。
此行为并非特定于我的机器,在每次测试前运行 bundle install 的干净 ruby:2.2 Docker 容器上的行为是相同的。由于它每次都会加载一个干净的容器,因此“旧”版本的 gems 无法进入。
为了进一步复制 Docker 容器的“干净状态”,我刚刚在我的机器上用一个空的 gemset 进行了测试以排除 gem 版本冲突并得到了相同的结果:http://pastebin.com/9u3MJaFw
我的 Gemfile 确实没有提到 :ci
组。如果未加载 rspec-rails
gem,则没有参数的 RAILS_ENV=ci rake
不会将 Rspec 作为默认 Rake 任务运行,但它显然可以。我们还可以看到它有不同的行为,具体取决于它是否与 bundle exec
一起运行。我不相信使用 bundle exec
运行会“卸载” rspec-rails
如果在没有 bundler
的情况下以某种方式设法自动加载它。
如果 rspec
和/或 rspec-rails
没有被加载,rake
将失败,退出代码为 other比 0
,并吐出如下内容:
~/not-myapp $ touch Rakefile
~/not-myapp $ rake 规范
rake 中止!
不知道如何构建任务“spec”
(通过使用 --trace 运行任务查看完整跟踪)
最佳答案
几点:
rspec
和 bundle exec rspec
始终运行您的测试,因为它直接使用 rspec
可执行文件。
gem rspec-rails
定义了一些 rake 任务,包括 spec
任务。但是,只有在使用的环境中加载了 rspec gem 后,rake
才能运行此任务。如果你的 Gemfile 中有这样的东西:
group :test, :development do
gem 'rspec-rails', '~> 3.0'
end
spec
任务命令仅适用于测试和开发环境,不适用于 RAILS_ENV=ci
。
建议始终使用 bundle exec
来运行 ruby 可执行文件。来自Bundler website :
In some cases, running executables without
bundle exec
may work, if the executable happens to be installed in your system and does not pull in any gems that conflict with your bundle.However, this is unreliable and is the source of considerable pain. Even if it looks like it works, it may not work in the future or on another machine.
如果没有 bundle exec
,可执行文件可能会通过混合其他 gem 或机器上已安装的 gem 版本而出现意外或不一致的行为。
在您的情况下,RAILS_ENV=ci rake
有效而 RAILS_ENV=ci rake spec
无效的事实可能是由于与旧版本 rspec-spec
,或由其他一些定义其他默认 rake 任务的 gem。
在任何情况下,这种行为都不是错误,可能是您的机器特有的。我建议只使用 bundle exec rspec
来运行测试。
编辑:回应您的评论:
4 - 即使 rspec-rails
未加载,rake spec
也不会崩溃,这是一个棘手的部分。当您尝试运行任务 example
时,rake
首先在加载的 rakefile 中搜索任务 example
。如果找不到,它将检查文件 example
是否存在于您的项目中。如果是,它将尝试从该文件执行任务。
在您的例子中,文件 spec
存在于您的项目中,并且是一个目录。所以当你执行 rake spec
时,如果任务 spec
不存在,它将加载你的 spec
文件,并且在存在之前什么也不做没有任务要在其中运行。
这就是为什么 rake blublu
会失败,但 rake spec
或 rake app
不会。
关于ruby-on-rails - 'rake spec' 不与自定义 RAILS_ENV 一起运行,但 'rspec' 和 'bundle exec rspec' 可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32217900/
好的,所以我编辑了以下... 只需将以下内容放入我的 custom.css #rt-utility .rt-block {CODE HERE} 但是当我尝试改变... 与 #rt-sideslid
在表格 View 中,我有一个自定义单元格(在界面生成器中高度为 500)。在该单元格中,我有一个 Collection View ,我按 (10,10,10,10) 固定到边缘。但是在 tablev
对于我的无能,我很抱歉,但总的来说,我对 Cocoa、Swift 和面向对象编程还很陌生。我的主要来源是《Cocoa Programming for OS X》(第 5 版),以及 Apple 的充满
我正在使用 meta-tegra 为我的 NVIDIA Jetson Nano 构建自定义图像。我需要 PyTorch,但没有它的配方。我在设备上构建了 PyTorch,并将其打包到设备上的轮子中。现
在 jquery 中使用 $.POST 和 $.GET 时,有没有办法将自定义变量添加到 URL 并发送它们?我尝试了以下方法: $.ajax({type:"POST", url:"file.php?
Traefik 已经默认实现了很多中间件,可以满足大部分我们日常的需求,但是在实际工作中,用户仍然还是有自定义中间件的需求,为解决这个问题,官方推出了一个 Traefik Pilot[1] 的功
我想让我的 CustomTextInputLayout 将 Widget.MaterialComponents.TextInputLayout.OutlinedBox 作为默认样式,无需在 XML 中
我在 ~/.emacs 中有以下自定义函数: (defun xi-rgrep (term) (grep-compute-defaults) (interactive "sSearch Te
我有下表: 考虑到每个月的权重,我的目标是在 5 个月内分散 10,000 个单位。与 10,000 相邻的行是我最好的尝试(我在这上面花了几个小时)。黄色是我所追求的。 我试图用来计算的逻辑如下:计
我的表单中有一个字段,它是文件类型。当用户点击保存图标时,我想自然地将文件上传到服务器并将文件名保存在数据库中。我尝试通过回显文件名来测试它,但它似乎不起作用。另外,如何将文件名添加到数据库中?是在模
我有一个 python 脚本来发送电子邮件,它工作得很好,但问题是当我检查我的电子邮件收件箱时。 我希望该用户名是自定义用户名,而不是整个电子邮件地址。 最佳答案 发件人地址应该使用的格式是: You
我想减小 ggcorrplot 中标记的大小,并减少文本和绘图之间的空间。 library(ggcorrplot) data(mtcars) corr <- round(cor(mtcars), 1)
GTK+ noob 问题在这里: 是否可以自定义 GtkFileChooserButton 或 GtkFileChooserDialog 以删除“位置”部分(左侧)和顶部的“位置”输入框? 我实际上要
我正在尝试在主页上使用 ajax 在 magento 中使用 ajax 显示流行的产品列表,我可以为 5 或“N”个产品执行此操作,但我想要的是将分页工具栏与结果集一起添加. 这是我添加的以显示流行产
我正在尝试使用 PasswordResetForm 内置函数。 由于我想要自定义表单字段,因此我编写了自己的表单: class FpasswordForm(PasswordResetForm):
据我了解,新的 Angular 7 提供了拖放功能。我搜索了有关 DnD 的 Tree 组件,但没有找到与树相关的内容。 我在 Stackblitz 上找到的一个工作示例.对比drag'ndrop功能
我必须开发一个自定义选项卡控件并决定使用 WPF/XAML 创建它,因为我无论如何都打算学习它。完成后应该是这样的: 到目前为止,我取得了很好的进展,但还有两个问题: 只有第一个/最后一个标签项应该有
我要定制xtable用于导出到 LaTeX。我知道有些问题是关于 xtable在这里,但我找不到我要找的具体东西。 以下是我的表的外观示例: my.table <- data.frame(Specif
用ejs在这里显示日期 它给我结果 Tue Feb 02 2016 16:02:24 GMT+0530 (IST) 但是我需要表现为 19th January, 2016 如何在ejs中执行此操作?
我想问在 JavaFX 中使用自定义对象制作 ListView 的最佳方法,我想要一个每个项目如下所示的列表: 我搜了一下,发现大部分人都是用细胞工厂的方法来做的。有没有其他办法?例如使用客户 fxm
我是一名优秀的程序员,十分优秀!