每次执行测试时,都会收到这些弃用警告:
DEPRECATION WARNING: alias_method_chain is deprecated. Please, use Module#prepend instead. From module, you can access the original method using super. (called from <top (required)> at /Users/johnvanarkelen/Documents/Web development/rails/test-eagle/config/environment.rb:5)
DEPRECATION WARNING: alias_method_chain is deprecated. Please, use Module#prepend instead. From module, you can access the original method using super. (called from <top (required)> at /Users/johnvanarkelen/Documents/Web development/rails/test-eagle/config/environment.rb:5)
DEPRECATION WARNING: after_filter is deprecated and will be removed in Rails 5.1. Use after_action instead. (called from <top (required)> at /Users/johnvanarkelen/Documents/Web development/rails/test-eagle/config/environment.rb:5)
当我查看config/environment.rb
的第5行时,会出现以下代码:
Rails.application.initialize!
当我在我的仓库中搜索after_action
,after_filter
或alias_method_chain
时,找不到它。我该怎么做才能摆脱这些警告?
答案 0 :(得分:2)
我在最近的rails 5升级中遇到了alias_method_chain is deprecated ... from <top (required)> at /path/to/your/environment.rb
。这通常指向在您的Rails应用程序initialize!
调用期间所需的gem中的使用,或者如果您手动要求您的依赖项(我碰巧是),则使用Bundler.require
。
它可能更好地表达为:
在Rails初始化时,你所依赖的随机Gems之一做了我不喜欢的事情。找到它真有趣!
这是我为解决这些未知错误而采取的松散步骤:
bundle show rails
或$GEM_PATH
的父目录来确定当前捆绑的宝石所在的位置(请注意,对于来自不同来源的宝石,这可能会有所不同,例如git依赖项存储的方式与来自rubygems的存储方式不同)grep
,ripgrip
ag
)搜索已弃用的方法名称,例如rg "alias_method_chain" <gem path>
就我而言,alias_method_chain
的弃用警告是Kaminari的过时版本。我更新了我的Gemfile以允许更新版本,然后运行bundle update kaminari
对其进行排序。
忽略这些警告是一个非常糟糕的主意;如果它们没有立竿见影的效果,很容易让这样的小东西进入你的应用程序。这导致忽略警告或错误的行为正常化;这意味着您的应用程序和中存在更多错误和不一致性 当您尝试升级到删除已弃用行为的rails版本时,会遇到错误的时间。如果您或您的团队立即建立了查找和修复这些错误的标准,那么当它们出现时很容易发现并解决实际问题。你未来的自我会感谢你:))
答案 1 :(得分:0)
我最近遇到了同样的错误。创建新的Rails 5应用程序大约2分钟后出现此错误。当我遇到同样的错误时,我几乎没有开始以下chartkick tutorial。
操作顺序
错误:
DEPRECATION WARNING: alias_method_chain is deprecated. Please, use Module#prepend instead. From module, you can access the original method using super. (called from <top (required)> at richOnRails/chartkick/config/application.rb:7)
rake aborted!
错误消息提到了 config / application.rb 第7行中的问题:
require_relative 'boot'
require 'rails/all'
**Bundler.require(*Rails.groups)**
module Chartkick
class Application < Rails::Application
end
end
第7行: Bundler.require(* Rails.groups) *用于区分第7行的星号。
我没有看到第7行真正的错误。
试图用以下命令解决它:
bundle exec rake db:migrate [得到同样的错误]
捆绑更新
最后,解决了部分问题,给出了错误 - 使用以下代码:
bin/rake db:create
rake db:migrate
我仍然有相同的错误消息,但我现在可以使用&amp;访问我的数据库。错误显然仍然存在,但它不再妨碍我的进步。我还应该注意,我的新rails应用程序是使用postgresql作为默认数据库构建的。
rails new chartkick --database=postgresql
不确定这是否对您的情况有帮助,但它可能有助于其他人调试此问题。