升级 Rails 3 到 Rails 4 rake 任务 "Don't know how to build task"
Upgrading Rails 3 to Rails 4 rake tasks "Don't know how to build task"
我正在将 Rails 3 应用程序升级到 Rails 4,现有插件使用旧的 vendor/plugins 目录。在可能的情况下,我已切换到 gems,在其他情况下,我已将它们移至 lib 并在 config/initializers.
中创建初始化程序
其中一些插件添加的 rake 任务现在失败并出现错误“不知道如何构建任务 'X',其中 X
是任何已迁移到 lib 目录的任务。升级到 Rails 4 时是否需要采取其他一些步骤来迁移 rake 任务?
旧的 Rails 供应商插件样式会将 rake 任务放入 plugins 子目录下的 lib/tasks 子文件夹中。旧的文件结构看起来像这样。
/vendor/plugins/plugin1/lib/tasks/foo.rake
/vendor/plugins/plugin2/lib/tasks/bar.rake
Rails 4 取消了对插件的支持,因此您需要切换到 gems 或将插件移动到 lib 子目录并创建一个初始化程序。这为 rake 任务提供了一个新的目录结构,看起来像这样。
/lib/plugin1/lib/tasks/foo.rake
/lib/plugin2/lib/tasks/bar.rake
要选择这些 rake 任务,但要保留结构以便它与插件一起打包,您可以将以下行添加到 Rakefile。
Dir["lib/**/lib/tasks/**/*.rake"].each{ |r| load r }
我正在将 Rails 3 应用程序升级到 Rails 4,现有插件使用旧的 vendor/plugins 目录。在可能的情况下,我已切换到 gems,在其他情况下,我已将它们移至 lib 并在 config/initializers.
中创建初始化程序其中一些插件添加的 rake 任务现在失败并出现错误“不知道如何构建任务 'X',其中 X
是任何已迁移到 lib 目录的任务。升级到 Rails 4 时是否需要采取其他一些步骤来迁移 rake 任务?
旧的 Rails 供应商插件样式会将 rake 任务放入 plugins 子目录下的 lib/tasks 子文件夹中。旧的文件结构看起来像这样。
/vendor/plugins/plugin1/lib/tasks/foo.rake
/vendor/plugins/plugin2/lib/tasks/bar.rake
Rails 4 取消了对插件的支持,因此您需要切换到 gems 或将插件移动到 lib 子目录并创建一个初始化程序。这为 rake 任务提供了一个新的目录结构,看起来像这样。
/lib/plugin1/lib/tasks/foo.rake
/lib/plugin2/lib/tasks/bar.rake
要选择这些 rake 任务,但要保留结构以便它与插件一起打包,您可以将以下行添加到 Rakefile。
Dir["lib/**/lib/tasks/**/*.rake"].each{ |r| load r }