Raspberry Piの起動時に、SmashingDashboardを自動的に起動しようとしています。crontabの@rebootオプションを使用してスクリプトを実行する予定です(ダッシュボードをすでに自動的にシャットダウンする方法と同様)。ただし、以下のスクリプトの実行に問題があります。
command = 'cd "/home/pi/test"'
command2 = 'smashing start'
system "echo hi"
system command
puts command
system "echo Movement"
system command2
puts command2
The script itself is just being run from the terminal just now using
ruby /home/pi/start_up.rb.
cd "home/pi/test"
スクリプトの実行時に作業ディレクトリがコマンドを介して移動されないため、Smashingの開始が失敗したように見えます。次のエラーが表示されます。
Could not locate Gemfile or .bundle/ directory
Testディレクトリには確かにGemfileがあります。これは、smashing start
home / piフォルダーから直接実行した場合に発生するエラーと同じであり、フォルダーが移動されないことを示しています。これを行う正しい方法はありますか?アドバイスをいただければ幸いです。
あなたはcd "/home/pi/test"
ので、うまくいきませんでしたcd
ビルトインシェルがあります。シェルのディレクトリは変更されましたが、Rubyでは変更されませんでした。
Rubyでディレクトリを変更するには、
Dir.chdir '/home/pi/test'
各プロセスには、独自の現在のディレクトリがあります。Rubyは、コマンドを実行するためにKernel#system
シェルプロセス(おそらく/bin/sh
)を生成し、シェルが終了するのを待ちました。シェルはディレクトリを変更してから終了しました。Rubyはディレクトリを変更しませんでした。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加