【问题标题】:How to solve rake tasks deprecation on the rails plugin?如何解决 Rails 插件上的 rake 任务弃用问题?
【发布时间】:2010-05-18 14:29:07
【问题描述】:

由于here中引入的概念,

Rails::Plugin 只不过是一个 Rails::Engine,但由于它已加载 在启动过程中为时已晚,确实如此 没有相同的配置权限 作为一个裸 Rails::Engine。

相对于 Rails::Railtie 和 Rails::Engine,你不应该 继承自 Rails::Plugin。 Rails::Plugin 是自动的 通过简单地配置为引擎 放置在供应商/插件中。自从 这是自动完成的,你 实际上不能声明一个 Rails::Engine 在你的插件中, 否则会导致相同的 文件要加载两次。这表示 如果您想将引擎作为 gem 它不能用作插件和 反之亦然。

除了这个概念上的差异, 之间的唯一区别 Rails::Engine 和 Rails::Plugin 是 该插件会自动加载 插件根目录下的文件“init.rb” 在启动过程中。

rails 插件中的 rake 任务已被弃用,建议改用 lib/tasks。如何解决这个问题?我可以简单地将插件的任务移动到 lib/tasks 吗?

【问题讨论】:

    标签: ruby-on-rails rake


    【解决方案1】:

    我在这里遇到了同样的问题,只是将所有 vendor/plugin/*/tasks/*.rake 文件移动到 lib/tasks (必须创建此目录,因为它不存在)

    然后 rake rails:update 运行良好

    【讨论】:

    • 这似乎有效。但是我仍然很好奇这种行为的替代品应该是什么。即,插件现在如何定义新任务?
    • 它们都在 RAILS_ROOT/tasks/ 中,这就是为什么只是移动它们来解决这个问题,它是同一件事,但在不同的地方
    • 谢谢..这行得通。请将答案标记为 Accepted Dida
    • 要从命令行一次移动所有这些文件,从项目的根目录运行mkdir lib/tasks,然后运行mv vendor/plugins/*/tasks/*.rake lib/tasks
    【解决方案2】:

    如果你是一个插件的开发者,你只需移动

    my_cool_plugin/tasks
    

    my_cool_plugin/lib/tasks
    

    【讨论】:

      猜你喜欢
      • 2012-01-31
      • 1970-01-01
      • 2011-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-10
      • 2019-04-05
      • 2018-01-30
      相关资源
      最近更新 更多