在我要从 升级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命令工作正常。