ボタンクリックで実行したいSinatraアプリケーション外のフォルダにRubyスクリプトがあります。Sinatraアプリケーションから外部Rubyスクリプトを実行する方法
これはapp.rbファイルです:
require 'sinatra'
get '/' do
erb :home
end
get '/launch_script' do
system("ruby path\\to\\file\\delete_rows_csv.rb")
end
これはhome.erbファイルです:
<a href='/launch_script'> Launch a Script </a>
私は、ファイルパスをロードするか、この作業を取得するためにファイルを要求することになっているだろうか?
require 'sinatra'
get '/' do
erb :home
end
get '/launch_script' do
load 'path\\to\\file\\delete_rows_csv.rb'
end
'ruby path/to/file'を使用しないでください。コードを実行するRubyインタプリタへの絶対パスを使用します。それがなければ、システムは環境PATHを検索してそれを見つけなければならず、PATHがRubyがどこにあるかを含まない場合、コマンドは失敗します。通常、サーバーは制限付きユーザーとして実行されるため、適切なパスはWebサーバーに設定されません。 –
が合意しましたが、私の絶対パスを投稿しないために、私はそれを残しました。 – aronlmin