问题标签 [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.
ruby - 如何多次调用 Thor 任务?
Thor 和 Rake(和 Make)一样具有任务管理功能。如果我多次调用一个任务,它只会有效地调用该任务一次。如何多次调用任务?
我尝试修改@_invocations
哈希,但没有奏效:
ruby - 从 Thor 可执行文件运行命令行命令
在我的可执行 Ruby 文件中,我有以下内容:
在终端中,当我按原样运行文件时,我得到一个空行,因为 Thor 的运行命令返回一个 NilClass。
但是,当我取消注释 puts `ls ~` 并注释掉 Thor 的 run 方法时,我会按预期得到我的主目录的输出。
我无法弄清楚为什么我不能让 Thor 的 run 方法像 Ruby 的滴答声一样工作。
有什么我可能出错的想法吗?
感谢您的关注
thor - 测试任务时使用默认选项
我想用 rspec 测试 thor 任务,但是从 rspec 调用它们时,我有两个要求:
- 我想有可用的 Thor 类实例
- 我想用默认选项调用任务(因为它将从命令行调用)
我无法同时实现这两个,请考虑以下代码:
输出是:
在前两个示例中,我可以通过实例调用任务,但默认选项不会传递给方法(这使得规范不切实际)
在第三个示例中,我获得了默认选项,但我无法对类实例设置期望值,也无法存根任何难以测试的方法。这是因为类实例是动态创建的。
ruby - 执行位于捆绑 gem 中的 Thor 任务
我有一个 gem,my_gem,它具有thor作为运行时依赖项。我有一个托尔的子类位于宝石中:
lib/tasks/task.thor
从 gem 的源目录我可以运行:
并且 my_task 将被执行。
但是,如果我将my_gem包含在另一个项目的 Gemfile 中,当我运行时:
我得到:
没有可用的雷神任务
我究竟做错了什么?
ruby-on-rails - 如何在 Rails 生成器中使用 Thor::Shell::Basic?
我正在编写一个 Rails 3.2 生成器,并想使用Thor::Shell::Basic实例方法(例如ask
或yes?
),就像他们在官方 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"
尽管我使用了生成器来生成生成器,但有些东西没有正确设置......
ruby-on-rails - 在传递到rails生成器中的钩子之前更改参数
我正在尝试制作简单的视图生成器并使用 DRY 原则,我不想拥有自己的 html (erb/haml/slim) 模板。我希望我的生成器连接到现有的模板引擎并传递一些参数。
我的view_generator.rb
文件如下所示:
一切都像这样正常工作。我想做的some_custom_method
是添加几个属性:
发生的事情是我new_attribute
在attributes
数组中插入,但是当hook_for
执行时,attribute
变量恢复为从命令行传递的原始变量。
我怎样才能绕过这个?
thor - 如何从 Thor 任务中将 gem 添加到组中?
我正在执行 Thor 任务,我想将 gem 添加到我的 gem 文件中的资产组(见下文)。
gem_group 命令(从标准 Rails 应用程序模板中得知)在 Thor 任务中似乎不起作用(请参阅底部的错误)。
我怎样才能最好地从 Thor 任务中将 gem 添加到 gem 文件中的组中?
欢迎任何想法 - 谢谢。
输出看起来像这样......
ruby - 如何让两个雷神任务共享选项?
Thor 可以method_option
用来设置特定任务的选项。要为一个类中的所有任务设置选项,可以使用class_option
. 但是,如果一个人想要一个类的一些任务,但不是全部,共享选项呢?
在下文中task1
,和task2
共享期权,但他们不共享所有期权,也不与 共享期权task3
。
声明method_option :type, :type => :string, :required => true, :default => 'foo'
两者task1
的问题task2
是它违反了 DRY 原则。有没有一种惯用的方法来处理这个?
ruby - Cucumber/Aruba Thor:在单个场景中测试多个命令,第一次通过,第二次失败
我正在尝试使用 Bundler 和 Thor 编写一个小的 ruby gem 来生成一些模板。我正在用 Cucumber 和 Aruba 编写测试,但无法让它们通过。
我在应用程序中定义了以下 Thor CLI 类:
这是app.rb
文件:
和layout.rb
文件:
我为该app
方法编写了一个黄瓜测试,它通过了。但是,该layout
方法失败了。这是测试:
测试的第一部分很好地通过了(即创建了目录),但是关于验证文件是否存在的部分失败了。我检查了文件结构,并且layout_template.erb
文件存在,所以我无法弄清楚为什么它没有正确模板化。
ruby - 如果不满足条件,Thor::Group 不会继续
我正在从 RubiGen 转换生成器,并希望这样做,如果不满足条件,则 Thor::Group 中的任务组不会完成。
RubiGen 生成器看起来像这样:
因此,如果该站点尚未生成,它会显示一个使用横幅并退出。
使用 thor 重新创建它的最佳方法是什么?
这是我的任务。