我正在将Rails 5.1应用程序升级到5.2。我更新了所有的宝石,包括Rails,最后运行了rails app:update,它为我的rails应用程序创建了新的文件。
具体来说,有两个文件是创建的,与我有关。首先在config/initializers中有一个new_framework_defaults_5_2.rb文件,第二个(在同一个目录中)是一个new_framework_defaults.rb。第一个文件只包含注释,但第二个文件包含一些新的配置选项。其中一个选择是:
ActiveSupport.halt_callback_chains_on_return_false = false此方法调用引发undefined_method错误。我需要对这一行代码做些什么?
下面是堆栈跟踪:
Traceback (most recent call last):
73: from bin/rails:4:in `<main>'
72: from /usr/local/rvm/gems/ruby-2.5.1/gems/activesupport-5.2.0/lib/active_support/dependencies.rb:283:in `require'
71: from /usr/local/rvm/gems/ruby-2.5.1/gems/activesupport-5.2.0/lib/active_support/dependencies.rb:249:in `load_dependency'
70: from /usr/local/rvm/gems/ruby-2.5.1/gems/activesupport-5.2.0/lib/active_support/dependencies.rb:283:in `block in require'
69: from /usr/local/rvm/gems/ruby-2.5.1/gems/bootsnap-1.3.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:29:in `require'
68: from /usr/local/rvm/gems/ruby-2.5.1/gems/bootsnap-1.3.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:20:in `require_with_bootsnap_lfi'
67: from /usr/local/rvm/gems/ruby-2.5.1/gems/bootsnap-1.3.0/lib/bootsnap/load_path_cache/loaded_features_index.rb:65:in `register'
66: from /usr/local/rvm/gems/ruby-2.5.1/gems/bootsnap-1.3.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `block in require_with_bootsnap_lfi'
65: from /usr/local/rvm/gems/ruby-2.5.1/gems/bootsnap-1.3.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require'
64: from /usr/local/rvm/gems/ruby-2.5.1/gems/railties-5.2.0/lib/rails/commands.rb:18:in `<main>'
63: from /usr/local/rvm/gems/ruby-2.5.1/gems/railties-5.2.0/lib/rails/command.rb:46:in `invoke'
62: from /usr/local/rvm/gems/ruby-2.5.1/gems/railties-5.2.0/lib/rails/command/base.rb:65:in `perform'
61: from /usr/local/rvm/gems/ruby-2.5.1/gems/thor-0.20.0/lib/thor.rb:387:in `dispatch'
60: from /usr/local/rvm/gems/ruby-2.5.1/gems/thor-0.20.0/lib/thor/invocation.rb:126:in `invoke_command'
59: from /usr/local/rvm/gems/ruby-2.5.1/gems/thor-0.20.0/lib/thor/command.rb:27:in `run'
58: from /usr/local/rvm/gems/ruby-2.5.1/gems/railties-5.2.0/lib/rails/commands/server/server_command.rb:142:in `perform'
57: from /usr/local/rvm/gems/ruby-2.5.1/gems/railties-5.2.0/lib/rails/commands/server/server_command.rb:142:in `tap'
56: from /usr/local/rvm/gems/ruby-2.5.1/gems/railties-5.2.0/lib/rails/commands/server/server_command.rb:147:in `block in perform'
55: from /usr/local/rvm/gems/ruby-2.5.1/gems/railties-5.2.0/lib/rails/commands/server/server_command.rb:51:in `start'
54: from /usr/local/rvm/gems/ruby-2.5.1/gems/railties-5.2.0/lib/rails/commands/server/server_command.rb:89:in `log_to_stdout'
53: from /usr/local/rvm/gems/ruby-2.5.1/gems/rack-2.0.5/lib/rack/server.rb:354:in `wrapped_app'
52: from /usr/local/rvm/gems/ruby-2.5.1/gems/railties-5.2.0/lib/rails/commands/server/server_command.rb:27:in `app'
51: from /usr/local/rvm/gems/ruby-2.5.1/gems/rack-2.0.5/lib/rack/server.rb:219:in `app'
50: from /usr/local/rvm/gems/ruby-2.5.1/gems/rack-2.0.5/lib/rack/server.rb:319:in `build_app_and_options_from_config'
49: from /usr/local/rvm/gems/ruby-2.5.1/gems/rack-2.0.5/lib/rack/builder.rb:40:in `parse_file'
48: from /usr/local/rvm/gems/ruby-2.5.1/gems/rack-2.0.5/lib/rack/builder.rb:49:in `new_from_string'
47: from /usr/local/rvm/gems/ruby-2.5.1/gems/rack-2.0.5/lib/rack/builder.rb:49:in `eval'
46: from config.ru:in `<main>'
45: from config.ru:in `new'
44: from /usr/local/rvm/gems/ruby-2.5.1/gems/rack-2.0.5/lib/rack/builder.rb:55:in `initialize'
43: from /usr/local/rvm/gems/ruby-2.5.1/gems/rack-2.0.5/lib/rack/builder.rb:55:in `instance_eval'
42: from config.ru:3:in `block in <main>'
41: from /usr/local/rvm/gems/ruby-2.5.1/gems/bootsnap-1.3.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:44:in `require_relative'
40: from /usr/local/rvm/gems/ruby-2.5.1/gems/activesupport-5.2.0/lib/active_support/dependencies.rb:283:in `require'
39: from /usr/local/rvm/gems/ruby-2.5.1/gems/activesupport-5.2.0/lib/active_support/dependencies.rb:249:in `load_dependency'
38: from /usr/local/rvm/gems/ruby-2.5.1/gems/activesupport-5.2.0/lib/active_support/dependencies.rb:283:in `block in require'
37: from /usr/local/rvm/gems/ruby-2.5.1/gems/bootsnap-1.3.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:29:in `require'
36: from /usr/local/rvm/gems/ruby-2.5.1/gems/bootsnap-1.3.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:20:in `require_with_bootsnap_lfi'
35: from /usr/local/rvm/gems/ruby-2.5.1/gems/bootsnap-1.3.0/lib/bootsnap/load_path_cache/loaded_features_index.rb:65:in `register'
34: from /usr/local/rvm/gems/ruby-2.5.1/gems/bootsnap-1.3.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `block in require_with_bootsnap_lfi'
33: from /usr/local/rvm/gems/ruby-2.5.1/gems/bootsnap-1.3.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require'
32: from /home/www-upload/treadmilldoctorcurrent/config/environment.rb:5:in `<main>'
31: from /usr/local/rvm/gems/ruby-2.5.1/gems/railties-5.2.0/lib/rails/application.rb:361:in `initialize!'
30: from /usr/local/rvm/gems/ruby-2.5.1/gems/railties-5.2.0/lib/rails/initializable.rb:60:in `run_initializers'
29: from /usr/local/rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/tsort.rb:205:in `tsort_each'
28: from /usr/local/rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/tsort.rb:226:in `tsort_each'
27: from /usr/local/rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/tsort.rb:347:in `each_strongly_connected_component'
26: from /usr/local/rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/tsort.rb:347:in `call'
25: from /usr/local/rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/tsort.rb:347:in `each'
24: from /usr/local/rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/tsort.rb:349:in `block in each_strongly_connected_component'
23: from /usr/local/rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/tsort.rb:415:in `each_strongly_connected_component_from'
22: from /usr/local/rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/tsort.rb:415:in `call'
21: from /usr/local/rvm/gems/ruby-2.5.1/gems/railties-5.2.0/lib/rails/initializable.rb:50:in `tsort_each_child'
20: from /usr/local/rvm/gems/ruby-2.5.1/gems/railties-5.2.0/lib/rails/initializable.rb:50:in `each'
19: from /usr/local/rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/tsort.rb:421:in `block in each_strongly_connected_component_from'
18: from /usr/local/rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/tsort.rb:431:in `each_strongly_connected_component_from'
17: from /usr/local/rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/tsort.rb:422:in `block (2 levels) in each_strongly_connected_component_from'
16: from /usr/local/rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
15: from /usr/local/rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/tsort.rb:228:in `block in tsort_each'
14: from /usr/local/rvm/gems/ruby-2.5.1/gems/railties-5.2.0/lib/rails/initializable.rb:61:in `block in run_initializers'
13: from /usr/local/rvm/gems/ruby-2.5.1/gems/railties-5.2.0/lib/rails/initializable.rb:32:in `run'
12: from /usr/local/rvm/gems/ruby-2.5.1/gems/railties-5.2.0/lib/rails/initializable.rb:32:in `instance_exec'
11: from /usr/local/rvm/gems/ruby-2.5.1/gems/railties-5.2.0/lib/rails/engine.rb:613:in `block in <class:Engine>'
10: from /usr/local/rvm/gems/ruby-2.5.1/gems/railties-5.2.0/lib/rails/engine.rb:613:in `each'
9: from /usr/local/rvm/gems/ruby-2.5.1/gems/railties-5.2.0/lib/rails/engine.rb:614:in `block (2 levels) in <class:Engine>'
8: from /usr/local/rvm/gems/ruby-2.5.1/gems/railties-5.2.0/lib/rails/engine.rb:656:in `load_config_initializer'
7: from /usr/local/rvm/gems/ruby-2.5.1/gems/activesupport-5.2.0/lib/active_support/notifications.rb:170:in `instrument'
6: from /usr/local/rvm/gems/ruby-2.5.1/gems/railties-5.2.0/lib/rails/engine.rb:657:in `block in load_config_initializer'
5: from /usr/local/rvm/gems/ruby-2.5.1/gems/activesupport-5.2.0/lib/active_support/dependencies.rb:277:in `load'
4: from /usr/local/rvm/gems/ruby-2.5.1/gems/activesupport-5.2.0/lib/active_support/dependencies.rb:249:in `load_dependency'
3: from /usr/local/rvm/gems/ruby-2.5.1/gems/activesupport-5.2.0/lib/active_support/dependencies.rb:277:in `block in load'
2: from /usr/local/rvm/gems/ruby-2.5.1/gems/bootsnap-1.3.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:50:in `load'
1: from /usr/local/rvm/gems/ruby-2.5.1/gems/bootsnap-1.3.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:50:in `load'
/home/www-upload/treadmilldoctorcurrent/config/initializers/new_framework_defaults.rb:21:in `<main>': undefined method `halt_callback_chains_on_return_false=' for
ActiveSupport:Module (NoMethodError)提前谢谢。
发布于 2018-06-25 09:41:12
在上一次从5.1升级到5.2时,我遇到了同样的问题。我所做的就是在config/initializers/new_framework_defaults.rb中注释掉这一行
# Do not halt callback chains when a callback returns false. Previous versions had true.
# ActiveSupport.halt_callback_chains_on_return_false = false我猜它会导致这个错误,因为halt_callback_chains_on_return_false选项实际上是根据本新闻稿从ActiveSupport中删除的。
发布于 2018-06-19 11:15:43
这是之前的行为:
WelcomeController < ApplicationController
before_action: -> { return false }
def index
# would not be called
end
endhalt_callback_chains_on_return_false = false所做的事情:
WelcomeController < ApplicationController
before_action: -> { return false }
def index
# would now be rendered regardless of the before_action filter chain's return value
end
endRails认为您应该在过滤器链中做些什么来防止呈现:
WelcomeController < ApplicationController
before_action: -> { raise 'Error' }
def index
# would not be rendered
end
end希望这能有所帮助。
最好的,埃米尔
发布于 2018-09-01 17:16:20
halt_callback_chains_on_return_false setting in the initializer 这是在升级到Rails 5.0之后临时保持旧回调行为的解决方案。假设您需要时间检查应用程序中的所有回调,然后可以删除此设置。并假定在升级到5.2时,all已被选中,因此此设置将被删除。
只需按@worrawut建议的方式在config/initializers/new_framework_defaults.rb文件中注释行即可。
https://stackoverflow.com/questions/50917362
复制相似问题