在我要从 升级Rails 3.2.22.4
到的应用程序中Rails 4.0.13
,以下用于增强全局环境任务的代码块已成为障碍,因为它无法在目标 Rails 版本上运行:
Rails.application.class.rake_tasks do
Rake::Task["environment"].enhance do
...
end
end
这在 . 上工作正常3.2
,但Don't know how to build task 'environment'
在4.0
.
在 3.2 中,Rails.application.class.rake_tasks
返回一个Proc object
( [#<Proc:0x007f978602a470@.../lib/rails/application.rb:301>]
) 指向rails 代码库中的这一行。在 4.0 上,它返回一个空数组。
上面提到的那一行Proc object
似乎在这个 commit中被删除了。
environment
增强rake 任务的首选方法是Rails 4.x
什么?
上面的代码在lib/subdomain/rake.rb
文件中,它包含在以下代码中lib/subdomain/engine.rb
:
module Subdomain
class Engine < Rails::Engine
...
rake_tasks do |_app|
require 'subdomain/rake'
end
...
end
end
由于命令失败并出现此错误,因此无法执行 Rake 任务。rails server|console
命令工作正常。