Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

rubyで作成したシステムをvscodeのターミナルで実行してノートpcを閉じると実行が中断されてしまいます。

解決したいこと

rubyで構築したシステムをノートpcを閉じたり、電源を切った状態でも実行されるようにしたいです。

rubyでランダムの時間で一定の操作をするシステム(botだと思ってください)を作ったのですが、これをvscodeのターミナルで実行するとpcをつけている状態だと動作するのですが、pcを閉じると実行が中断されてしまいます。

こういったシステムを作った際はヘロクなどにデプロイすればpcを閉じていても、実行されるのでしょうか?
またもしデプロイすれば実行できる場合自動的に実行するやり方や、やり方が乗っている記事などを教えていただけないでしょうか?

最後まで読んでいただきありがとうございます。
初心者なので説明が下手で伝わらない点も多々あるかと思いますが、
教えていただけますと幸いです。
よろしくお願いします。

0

4Answer

macのことはあまり知らないですが画面を閉じるとプログラムを停止するのはOSの設定(名称は「省電力設定」など)で設定します。
特定のプログラムだけ動かすわけではなく「閉じてもスリープ状態にならない設定にする」ことになります。

電源を切っていても実行するなら同じく電源管理関係の設定で起動スケジュールを設定できるようですが、「rubyスクリプトを実行後は電源を切るようにしたら、自分が使っているときに電源を切られた」みたいなことが起きかねないので初心者が手を出さない方がいいと思います。

「ヘロクなどにデプロイすれば~」は自分のマシンではなく業者のサーバーで実行させることになります。だから自分のマシンがどのような状態でも関係なく実行されます。
そのかわりデータを収集するようなbotならその結果もサーバーに保存されるので、サーバーにアクセスしてデータを取り出すといった操作が必要になります。

一定時間ごとに簡単な処理を繰り返すようなものならクラウドのサービスの方が簡単で安上がりだったりすることもありえます。

このようにいろんな方法はありますがどの方法もそれなりに勉強しないといけないので、もっとも簡単なのは最初に書いた「macをスリープしない設定にして電源を入れたまま放置」ですね。

2Like

Comments

  1. @NetaNeta0620

    Questioner

    ご返信ありがとうございます!!
    こんなにも色々な方法があるんですね!とても参考になります。

    herokuにデプロイして実行する方法を知りたいのですが、何か参考になる記事などございますか?
    いろいろ教えていただいたのに図図しいお願いで申し訳ないのですが、教えていただけると幸いです。
  2. Herokuの使い方を勉強した。【Pythonを定期的に自動実行したい】
    https://qiita.com/k1mu0419/items/b5985fdf3b71c9db5b17

    検索するとQiita内にHerokuでPythonを定期実行させる記事がありました。
    コマンドラインで実行しているので、Rubyでもほとんどそのまま参考にできると思います。

cronですか?

サーバーで実行するなら自分のPCは全く関係なく実行されますね
cronの使えるサーバーにスクリプトを設置するなどしてはいかがですか

0Like

Comments

  1. @NetaNeta0620

    Questioner

    使用しているのはmacでcronそのものを理解しきれていません。

    何か初心者でも参考になる記事などないでしょうか?
    無理言ってすみません。

横から失礼します。

herokuの参考記事(今だともしかしたら月額料金かかるかも)
https://devcenter.heroku.com/ja/articles/getting-started-with-ruby

cronの参考記事
https://qiita.com/suzu12/items/e12b3a8c6cbc3ea81720

cronとは一定時間ごとにプログラムを自動実行するための技術です。
(毎日12時に「hello」と出力する、など)
NetaNetaさんのプログラムでは「いつ操作するか」もプログラムの中で制御されているため常に実行させておく必要がありますが、
「いつ操作するか」の部分をcronに任せることで、rubyのプログラムでは「実行時に何をするか」だけを書けばよくなります。
ただ、今のプログラムのままが良いのであればcronは今回の解決策にはならないと思います。

albireoさんも回答されていますが、herokuにデプロイしてずっと動かすというのは
herokuが持っているMacが24時間電源つきっぱになっていて、その上でrubyプログラムをずっと動かしている、というイメージです。(正確にはMacではないですが)
なので同じようなことをしようとすると、NetaNetaさんのMacも24時間起動させておくか、herokuなど代わりに24時間コンピュータを動かしてくれるサービスを使う、の2択になると思います。

0Like

Your answer might help someone💌