teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

書式の改善

2020/08/01 05:50

投稿

nonsuke0113
nonsuke0113

スコア1

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

初心者アイコンの設定

2020/08/01 05:50

投稿

nonsuke0113
nonsuke0113

スコア1

title CHANGED
File without changes
body CHANGED
@@ -70,5 +70,6 @@
70
70
  * 本処理を実行する前にスクリプトの処理を中断してしまっている?
71
71
  * そもそも非同期になっていない?
72
72
 
73
+
73
74
  本件実現するための良い方法があれば、ご教示いただきたいです。
74
75
  よろしくお願いいたします。