ruby
  • raspberry-pi
  • dashing
  • 2017-11-29 22 views 1 likes 
    1

    ラズベリーパイが起動したときにスマッシュダッシュボードを自動的に開始しようとしています。私は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"コマンドで移動していないために失敗するように見える開始確かにGemfileがTestディレクトリにあり

    Could not locate Gemfile or .bundle/ directory 
    

    。これは、ホーム/ piフォルダから直接smashing startを実行して、そのフォルダが決して移動しないことを示唆したのと同じエラーです。これを行う正しい方法はありますか? アドバイスをいただければ幸いです。

    +0

    スクリプトから 'cd'をしてみませんか? –

    答えて

    1

    cdがシェルを内蔵しているため、cd "/home/pi/test"が機能しませんでした。それはシェルのディレクトリを変更しましたが、Rubyでは変更しませんでした。

    各プロセスは、独自のカレントディレクトリを持ってい

    Dir.chdir '/home/pi/test' 
    

    を使用し、Rubyでディレクトリを変更します。 RubyのKernel#systemはシェルプロセス(おそらく/bin/sh)を起動してコマンドを実行し、シェルが終了するのを待っていました。シェルはディレクトリを変更して終了しました。 Rubyは決してディレクトリを変更しませんでした。

    関連する問題