После этого:
исполняемый файл ruby не запускается ,
Теперь у меня есть еще одна проблема со следующим простым скриптом:
require 'tk'
require 'tkextlib/tile'
root = TkRoot.new()
button = Tk::Tile::TButton.new(root) {text "Hello World"}.grid
button.command {system("ipconfig > info.txt")}
Tk.mainloop()
Если я нажму кнопку Hello World, консоль Windows cmd будет отображаться менее одной секунды. Нет выводов на него, я также попытался перенаправить его вывод в файл и его пустым.
Если я запускаю своего scprit следующим образом:
G:\WinRuby\efdsk>ruby efdsk.rb
Нет проблем.
Так что эта проблема появится, когда я запустил свой exe-файл, созданный с помощью ocra, а также когда я запустил свой скрипт следующим образом:
rubyw efdsk.rb
Если я прокомментирую следующую строку,
button.command {system("ipconfig > info.txt")}
Проблема исчезнет, поэтому я думаю, что это связано с системой ().
Я также попытался заменить предыдущую строку следующим:
cmd="ipconfig > info.txt"
Open3.popen3(cmd) {|stdin, stdout, stderr, wait_thr|}
Но cmd будет выглядеть так же, когда я нажму кнопку.
Это моя рубиновая версия:
ruby 2.3.3p222 (2016-11-21 revision 56859) [x64-mingw32]
И эта проблема появится и на следующих версиях ruby, протестированных мной:
ruby 2.1.5p273 (2014-11-13 revision 48405) [x64-mingw32]
ruby 2.0.0p648 (2015-12-16) [x64-mingw32]
ruby 1.9.3p551 (2014-11-13) [i386-mingw32]
Я попытался запустить exe-файл и скомпилировать его на других компьютерах, Windows 7 и 10. Все та же проблема.