gpt4 book ai didi

ruby-on-rails - 使用通配符时,只有一个文件在 rails runner 中运行

转载 作者:太空宇宙 更新时间:2023-11-03 18:08:51 25 4
gpt4 key购买 nike

我正在使用 rails runner,我想在一个文件夹中运行多个脚本。

这是我的文件结构......

$ ls db/test/

de_test.rb
fr_test.rb
ja_test.rb
....

de_test.rb

puts "DE"

fr_test.rb

puts "FR"

ja_test.rb

puts "JA"

现在如果我运行:

$ bundle exec script/rails runner -e production db/test/de_test.rb
DE
$ bundle exec script/rails runner -e production db/test/fr_test.rb
FR
$ bundle exec script/rails runner -e production db/test/ja_test.rb
JA
$ bundle exec script/rails runner -e production db/test/*test.rb
DE

为什么 db/test/*test.rb 没有运行所有文件?我能做些什么来解决这个问题。

这是在 RHEL 上。

最佳答案

Bash globs 只是一次写入多个文件名参数的简写:

这个:

bundle exec script/rails runner -e production db/test/*test.rb

将与您编写的完全相同:

bundle exec script/rails runner -e production db/test/de_test.rb db/test/fr_test.rb db/test/ja_test.rb

缺少文档,但很可能这只会运行 de_test.rb 并将其他文件作为附加命令行参数。这就是您只看到 DE 的原因。

你想要做的是为每个文件运行一个命令,即:

bundle exec script/rails runner -e production db/test/de_test.rb
bundle exec script/rails runner -e production db/test/fr_test.rb
bundle exec script/rails runner -e production db/test/ja_test.rb

您可以使用 for 循环执行此操作:

for file in db/test/*test.rb;
do
bundle exec script/rails runner -e production "$file";
done

(如果您愿意,可以将所有内容放在一行中)

关于ruby-on-rails - 使用通配符时,只有一个文件在 rails runner 中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38212792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com