使用加载命令在 Rails 控制台中调用脚本时传递参数
Pass an argument when calling a script in Rails console with load command
我知道如何使用 ARGV 数组访问命令参数,但我 运行 遇到了问题。我有一个脚本,我不能 运行 独立,而是需要 运行 在 rails 控制台中。有没有办法在调用文件时传递参数?
load '/tmp/test.rb'
我试过把它放在引号里,放在引号外,一时心血来潮试 < 无济于事。
感谢您提供的任何帮助!
这是肮脏的 hack,但似乎您可以将数组分配给 ARGV 并根据您的需要从加载的脚本中使用它:
$ Temp cat argv.rb
p ARGV
$ Temp irb
2.1.0 :001 > ARGV
=> []
2.1.0 :002 > load 'argv.rb'
[]
=> true
2.1.0 :003 > ARGV = ['A', 'B']
(irb):3: warning: already initialized constant ARGV
=> ["A", "B"]
2.1.0 :004 > load 'argv.rb'
["A", "B"]
=> true
2.1.0 :005 >
你可以这样做:
bundle exec rails runner /tmp/test.rb argument1 argument2
我知道如何使用 ARGV 数组访问命令参数,但我 运行 遇到了问题。我有一个脚本,我不能 运行 独立,而是需要 运行 在 rails 控制台中。有没有办法在调用文件时传递参数?
load '/tmp/test.rb'
我试过把它放在引号里,放在引号外,一时心血来潮试 < 无济于事。
感谢您提供的任何帮助!
这是肮脏的 hack,但似乎您可以将数组分配给 ARGV 并根据您的需要从加载的脚本中使用它:
$ Temp cat argv.rb
p ARGV
$ Temp irb
2.1.0 :001 > ARGV
=> []
2.1.0 :002 > load 'argv.rb'
[]
=> true
2.1.0 :003 > ARGV = ['A', 'B']
(irb):3: warning: already initialized constant ARGV
=> ["A", "B"]
2.1.0 :004 > load 'argv.rb'
["A", "B"]
=> true
2.1.0 :005 >
你可以这样做:
bundle exec rails runner /tmp/test.rb argument1 argument2