ruby - 执行位于 bundle 的 gem 中的 Thor 任务

标签 ruby gem bundler command-line-interface thor

我有一个 gem,my_gem,它具有 thor 作为运行时依赖项。我在 gem 中有一个 Thor 的子类:

lib/tasks/task.thor

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

bundle
thor task:my_task

my_task 将被执行。

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

bundle
thor task:my_task

我得到:

No thor tasks available

我做错了什么?

最佳答案

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

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

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

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

关于ruby - 执行位于 bundle 的 gem 中的 Thor 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13618395/

相关文章:

c++ - 编译 Ruby C++ 扩展

ruby-on-rails - Rails 使用 MS SQL Server 数据库

ruby - net::scp 复制/覆盖文件夹

ruby-on-rails - Gemfile 中未使用的 gem 会占用 Rails 中的内存吗?

ruby - Chef 执行非顺序配方

ruby-on-rails - bundle : Permission denied

ruby - 在 Rails 项目中测试本地版本的 gem

ruby - Ruby 的 .() 运算符如何工作?

ruby-on-rails - 与docker-compose bundle 在一起可从头开始安装gem

ruby - 如何在安装的不同版本的 gem 之间切换?