问题标签 [thor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
593 浏览

ruby - 如何多次调用 Thor 任务?

Thor 和 Rake(和 Make)一样具有任务管理功能。如果我多次调用一个任务,它只会有效地调用该任务一次。如何多次调用任务?

我尝试修改@_invocations哈希,但没有奏效:

0 投票
2 回答
1432 浏览

ruby - 从 Thor 可执行文件运行命令行命令

在我的可执行 Ruby 文件中,我有以下内容:

在终端中,当我按原样运行文件时,我得到一个空行,因为 Thor 的运行命令返回一个 NilClass。

但是,当我取消注释 puts `ls ~` 并注释掉 Thor 的 run 方法时,我会按预期得到我的主目录的输出。

我无法弄清楚为什么我不能让 Thor 的 run 方法像 Ruby 的滴答声一样工作。

有什么我可能出错的想法吗?

感谢您的关注

0 投票
2 回答
1393 浏览

thor - 测试任务时使用默认选项

我想用 rspec 测试 thor 任务,但是从 rspec 调用它们时,我有两个要求:

  1. 我想有可用的 Thor 类实例
  2. 我想用默认选项调用任务(因为它将从命令行调用)

我无法同时实现这两个,请考虑以下代码:

输出是:

在前两个示例中,我可以通过实例调用任务,但默认选项不会传递给方法(这使得规范不切实际)

在第三个示例中,我获得了默认选项,但我无法对类实例设置期望值,也无法存根任何难以测试的方法。这是因为类实例是动态创建的。

0 投票
1 回答
720 浏览

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

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

lib/tasks/task.thor

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

并且 my_task 将被执行。

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

我得到:

没有可用的雷神任务

我究竟做错了什么?

0 投票
1 回答
765 浏览

ruby-on-rails - 如何在 Rails 生成器中使用 Thor::Shell::Basic?

我正在编写一个 Rails 3.2 生成器,并想使用Thor::Shell::Basic实例方法(例如askyes?),就像他们在官方 Rails 指南中的 Application Templates一样。

这会给我一个NoMethodError: undefined method 'yes?' for MyNamespace::ScaffoldGenerator:Class.

我想不出一种干净的方法来使这些实例方法可用 - 我已经从Rails::Generators::Base.

编辑:

啊,这可能与托尔无关……我收到警告:

[WARNING] Could not load generator "generators/my_namespace/scaffold/scaffold_generator"

尽管我使用了生成器来生成生成器,但有些东西没有正确设置......

0 投票
1 回答
270 浏览

ruby-on-rails - 在传递到rails生成器中的钩子之前更改参数

我正在尝试制作简单的视图生成器并使用 DRY 原则,我不想拥有自己的 html (erb/haml/slim) 模板。我希望我的生成器连接到现有的模板引擎并传递一些参数。

我的view_generator.rb文件如下所示:

一切都像这样正常工作。我想做的some_custom_method是添加几个属性:

发生的事情是我new_attributeattributes数组中插入,但是当hook_for执行时,attribute变量恢复为从命令行传递的原始变量。

我怎样才能绕过这个?

0 投票
0 回答
172 浏览

thor - 如何从 Thor 任务中将 gem 添加到组中?

我正在执行 Thor 任务,我想将 gem 添加到我的 gem 文件中的资产组(见下文)。

gem_group 命令(从标准 Rails 应用程序模板中得知)在 Thor 任务中似乎不起作用(请参阅底部的错误)。

我怎样才能最好地从 Thor 任务中将 gem 添加到 gem 文件中的组中?

欢迎任何想法 - 谢谢。

输出看起来像这样......

0 投票
5 回答
3022 浏览

ruby - 如何让两个雷神任务共享选项?

Thor 可以method_option用来设置特定任务的选项。要为一个类中的所有任务设置选项,可以使用class_option. 但是,如果一个人想要一个类的一些任务,但不是全部,共享选项呢?

在下文中task1,和task2共享期权,但他们不共享所有期权,也不与 共享期权task3

声明method_option :type, :type => :string, :required => true, :default => 'foo'两者task1的问题task2是它违反了 DRY 原则。有没有一种惯用的方法来处理这个?

0 投票
1 回答
663 浏览

ruby - Cucumber/Aruba Thor:在单个场景中测试多个命令,第一次通过,第二次失败

我正在尝试使用 Bundler 和 Thor 编写一个小的 ruby​​ gem 来生成一些模板。我正在用 Cucumber 和 Aruba 编写测试,但无法让它们通过。

我在应用程序中定义了以下 Thor CLI 类:

这是app.rb文件:

layout.rb文件:

我为该app方法编写了一个黄瓜测试,它通过了。但是,该layout方法失败了。这是测试:

测试的第一部分很好地通过了(即创建了目录),但是关于验证文件是否存在的部分失败了。我检查了文件结构,并且layout_template.erb文件存在,所以我无法弄清楚为什么它没有正确模板化。

0 投票
1 回答
121 浏览

ruby - 如果不满足条件,Thor::Group 不会继续

我正在从 RubiGen 转换生成器,并希望这样做,如果不满足条件,则 Thor::Group 中的任务组不会完成。

RubiGen 生成器看起来像这样:

因此,如果该站点尚未生成,它会显示一个使用横幅并退出。

使用 thor 重新创建它的最佳方法是什么?

这是我的任务。