質問編集履歴
2
書式の改善
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,15 +1,21 @@
|
|
1
1
|
### 実現したいこと
|
2
2
|
|
3
|
-
Ruby on Rails(3.0.5)で出来たページにて、ボタン押下時に、別サーバにあるシェルスクリプトを非同期で実行したい(すぐ同じページにリダイレクトして操作
|
3
|
+
Ruby on Rails(3.0.5)で出来たページにて、ボタン押下時に、別サーバにあるシェルスクリプトを非同期で実行したい(すぐ同じページにリダイレクトして操作できるようにしたい)です。
|
4
4
|
|
5
|
-
上記スクリプトは、cronで定時実行されているため、スクリプト
|
5
|
+
上記スクリプトは、cronで定時実行されているため、ボタン押下後、多重起動でスクリプトが実行できなかった時と、実行できた時に、それぞれ別のフラッシュメッセージを表示したいです。
|
6
|
-
多重起動時は、標準出力に"already"という文字列を出力します。多重起動していなければ、本処理の前に、"success"という文字列出力します。
|
7
6
|
|
7
|
+
ただし、そのスクリプトの処理は、別サーバとやりとりして、画像を加工するなど、かなり時間がかかる為、シェルスクリプトが起動できたかどうか判別できた後は、シェルスクリプトの完了を待たず、フラッシュメッセージを表示したいです。
|
8
|
-
|
8
|
+
→シェルスクリプトの起動ができたかどうかはRubyのcontroller側で受け取りたいが、その後は別サーバで勝手に処理を実行していて欲しいです。
|
9
9
|
|
10
|
+
### 試したこと
|
11
|
+
* スクリプト側で多重起動チェックを行うようにしました。
|
12
|
+
* 多重起動時は、標準出力に"already"という文字列を出力し、多重起動していなければ、本来スクリプトで実行される処理の前に、"success"という文字列を出力するようにしました。
|
13
|
+
* Open3.popen3を使用して、別サーバにあるシェルスクリプトを実行し、標準出力・エラーを随時受け取るようにしました。
|
14
|
+
* "success"または"already"という文字列を受け取ったら、ループを抜け、リダイレクトするようにしました。
|
10
15
|
### 発生している問題
|
16
|
+
"success"または"already"という文字列を受け取ったら、それに応じたフラッシュメッセージを表示して、リダイレクトできたのですが、"success"を受け取った後、スクリプトが動いているサーバにて、その後の処理が実行されていませんでした。
|
17
|
+
(該当のソースコード shの`echo "success" >&1`以降の処理が実行されなかった)。
|
11
18
|
|
12
|
-
Open3.popen3を使用して、標準出力・エラーを随時受け取り、欲しい文字列が来た時にループを抜けるようにしたのですが、スクリプトの本処理が実行されませんでした。
|
13
19
|
|
14
20
|
### 該当のソースコード
|
15
21
|
|
1
初心者アイコンの設定
title
CHANGED
File without changes
|
body
CHANGED
@@ -70,5 +70,6 @@
|
|
70
70
|
* 本処理を実行する前にスクリプトの処理を中断してしまっている?
|
71
71
|
* そもそも非同期になっていない?
|
72
72
|
|
73
|
+
|
73
74
|
本件実現するための良い方法があれば、ご教示いただきたいです。
|
74
75
|
よろしくお願いいたします。
|