【问题标题】:execute a Thor task located in a bundled gem执行位于捆绑 gem 中的 Thor 任务
【发布时间】:2023-03-03 09:00:24
【问题描述】:

我有一个 gem,my_gem,它具有 thor 作为运行时依赖项。我有一个托尔的子类位于宝石中:

lib/tasks/task.thor

我可以从 gem 的源目录运行:

bundle
thor task:my_task

my_task 将被执行。

但是,如果我将 my_gem 包含在另一个项目的 Gemfile 中,那么当我运行时:

bundle
thor task:my_task

我明白了:

没有可用的任务

我做错了什么?

【问题讨论】:

  • 我有一个想法,我可能需要bundle exec thor task:my_task,但仍然没有解决问题。
  • 您是否可以提供一个完整的示例,以便其他人可以尝试重现该问题?这样可以更轻松地为您提供帮助。
  • 来自其他 gem 的任务不会自动包含在您的 gem 中。不确定是否以及如何告诉 thor 从 gem 加载这些任务文件,但由于 gem 的 lib 文件夹位于加载路径中,您应该能够以某种方式加载它。

标签: ruby gem bundler command-line-interface thor


【解决方案1】:

在我看来,如果我理解正确,您的 lib/tasks/task.thor 实际上是 gem 本身的一部分,并且您希望 thor 找到隐藏在您的 gem 中的 thor 文件。

如果是这种情况,这将不起作用,因为 thor 不会自动查看您的 gem 目录。

您可能需要考虑根本不使用 thor 文件,而只是编写一个使用 thor 处理命令行参数的命令,例如 Rails 所做的那样。

如果你真的需要以这种方式运行 thor,那么你的 gem 必须“神奇”地将你的 thor 文件放在 thor 搜索的路径中。

【讨论】:

    猜你喜欢
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 2014-06-15
    相关资源
    最近更新 更多