1

Я знаю о доступе к аргументам команды с использованием массива ARGV, но у меня возникла проблема. У меня есть сценарий, который я не могу запускать автономно и вместо этого должен запускаться в консоли rails. Есть ли способ передать аргументы при вызове файла как такового?Передача аргумента при вызове сценария в консоли Rails с командой load

load '/tmp/test.rb' 

Я попытался поместить его в кавычки, снаружи и по наитию пытались < безрезультатно.

Благодарим за помощь, которую вы можете предоставить!

+0

Мог вы объясните, почему вы не можете использовать его отдельно? Похоже, проблема в этом. –

+0

Сценарий для экспорта объектов и вложений из моего экземпляра rails и требует ссылки и поиска объектов. – SnakeMan2058

ответ

1

Это грязный хак, но кажется, что вы можете присвоить массив 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 > 
+0

Спасибо! Это будет отлично работать для моих нужд – SnakeMan2058

1

Вы можете сделать это следующим образом:

bundle exec rails runner /tmp/test.rb argument1 argument2 
+0

Спасибо, это имеет смысл, но моя консоль довольно долго загружается. Я использую только аргументы, чтобы запретить вручную редактировать переменную входного файла в скрипте, сохранить его и снова загрузить. Вручную сделать это изменение в конечном счете быстрее, чем загрузка консоли каждый раз. – SnakeMan2058

+2

Для будущих зрителей это технически правильный ответ, но другой полезен для моей ситуации – SnakeMan2058

+0

как вы поймаете эти параметры? 'params' или' parameters' ... или как вы код test.rb, чтобы поймать «аргумент1» и «аргумент2» двум переменным? –

 Смежные вопросы

  • Нет связанных вопросов^_^