Class: Helper::AsyncCommand
- Inherits:
-
Object
- Object
- Helper::AsyncCommand
- Defined in:
- lib/helper.rb
Overview
外部コマンド実行中の待機ループの処理を書けるクラス
response = Helper::AsyncCommand.exec(“処理に時間がかかる外部コマンド”) do
print "*"
end if response.success?
puts "成功しました"
end
Class Method Summary collapse
Class Method Details
.exec(command, sleep_time = 0.5, &block) ⇒ Object
187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 |
# File 'lib/helper.rb', line 187 def self.exec(command, sleep_time = 0.5, &block) Thread.new { loop do block.call if block sleep(sleep_time) end }.tap { |th| if Helper::engine_jruby? # MEMO: # Open3.capture3 - 全く動かない # `` バッククウォート - 出力が文字化けする res = Open3.popen3(command) { |i, o, e| i.close `cd` # create dummy Process::Status object to $? [o.read, e.read, $?] } else res = Open3.capture3(command) end th.kill return res } end |