Ruby on rails 4 Cucumber功能不报告Rails中的NoMethod错误
我正在将一个项目从RoR-3.2迁移到RoR-4.2,一次一个模型/控制器。我已经建立了一个“干净”的rails项目,以逐步接收现有代码,并正在修改Cumber特性和步骤。我遇到过这样一种情况:场景正在通过,但当在该场景中运行的控制器在开发中运行时,会出现以下错误:Ruby on rails 4 Cucumber功能不报告Rails中的NoMethod错误,ruby-on-rails-4,cucumber,Ruby On Rails 4,Cucumber,我正在将一个项目从RoR-3.2迁移到RoR-4.2,一次一个模型/控制器。我已经建立了一个“干净”的rails项目,以逐步接收现有代码,并正在修改Cumber特性和步骤。我遇到过这样一种情况:场景正在通过,但当在该场景中运行的控制器在开发中运行时,会出现以下错误: ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux-gnu] * cucumber (1.3.19) * cucumber-rails (1.4.2) * de
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux-gnu]
* cucumber (1.3.19)
* cucumber-rails (1.4.2)
* declarative_authorization (0.5.7)
* devise (3.5.1)
* devise_security_extension (0.9.2)
* rails (4.2.1)
用户控制器中的NoMethodError#create
“超级用户”的未定义方法“hll_normalise”:字符串
提取的源(第21行附近):
19 def rolename=(名称)
20#hll_normalise是类字符串的本地扩展。
21写入属性(:rolename,name.hll\u normalize)
22完
20
Rails.root:
/home/byrnejb/Projects/Software/theHeart/code/hll\u th\u main
应用
跟踪|框架跟踪
|完整跟踪
app/models/role.rb:21:in
`罗莱奈
app/models/role.rb:33:in
`添加\所需\角色'
app/models/user.rb:34:in'bootstrap'
libexec/bundle/lib/gems/activesupport-4.2.1/lib/active\u support/callbacks.rb:432:in
`在make_lambda'
libexec/bundle/lib/gems/activesupport-4.2.1/lib/active\u support/callbacks.rb:164:in
`呼叫'
libexec/bundle/lib/gems/activesupport-4.2.1/lib/active\u support/callbacks.rb:164:in
`拦住
libexec/bundle/lib/gems/activesupport-4.2.1/lib/active\u support/callbacks.rb:504:in
`呼叫'
libexec/bundle/lib/gems/activesupport-4.2.1/lib/active\u support/callbacks.rb:504:in
`阻塞呼叫'
libexec/bundle/lib/gems/activesupport-4.2.1/lib/active\u support/callbacks.rb:504:in
`每个。
我相信我知道是什么导致了潜在的错误,缺少对类字符串的自定义库扩展,以及如何修复它。在此之前,我希望揭示为什么这个错误不会导致场景在运行期间失败
失败的代码在关联模型中调用,并在创建用户时执行。因此,它应该会触发黄瓜运行中的失败。但事实并非如此。我在用户代码库中有三个rescue子句,没有一个不能重新提出任何捕获到的错误
NoMethodError in UsersController#create
undefined method `hll_normalise' for "superuser":String
Extracted source (around line #21):
19 def rolename=(name)
20 # hll_normalise is a local extension of class String.
21 write_attribute(:rolename, name.hll_normalise)
22 end
20
Rails.root:
/home/byrnejb/Projects/Software/theHeart/code/hll_th_main
Application
Trace <http://localhost:3000/users#> | Framework Trace
<http://localhost:3000/users#> | Full Trace
<http://localhost:3000/users#> app/models/role.rb:21:in
`rolename=' <http://localhost:3000/users#>
app/models/role.rb:33:in
`add_required_roles' <http://localhost:3000/users#>
app/models/user.rb:34:in `bootstrap' <http://localhost:3000/users#>
libexec/bundle/lib/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:432:in
`block in make_lambda' <http://localhost:3000/users#>
libexec/bundle/lib/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:164:in
`call' <http://localhost:3000/users#>
libexec/bundle/lib/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:164:in
`block in halting' <http://localhost:3000/users#>
libexec/bundle/lib/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:504:in
`call' <http://localhost:3000/users#>
libexec/bundle/lib/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:504:in
`block in call' <http://localhost:3000/users#>
libexec/bundle/lib/gems/activesupport-4.2.1/lib/active_support/callbacks.rb:504:in
`each' <http://localhost:3000/users#> . . .