2016-06-14 96 views
1

我在我的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 
+0

請勿使用'ruby path/to/file'。使用你想運行代碼的Ruby解釋器的絕對路徑。如果沒有,系統必須搜索環境PATH才能找到它,並且如果PATH不包括Ruby所在的地方,則命令將失敗。通常,在Web服務器上未設置適當的路徑,因爲服務器作爲受限用戶運行。 –

+0

表示同意,但爲了不在郵件中張貼我的絕對路徑,我將其留在了外面。 – aronlmin

回答

1

您可以使用requirerequire_relative(取決於如果您的文件位於靜電的場所或相對於該文件)。最後不需要添加.rb

require 'sinatra' 

get '/' do 
    erb :home 
end 

get '/launch_script' do 
    require 'path\\to\\file\\delete_rows_csv' 
end 
+1

另外,更改要求加載和添加一個rb使事情更順暢 – aronlmin

+0

啊是的,我完全忘記了「加載」(它需要全名,但允許您不斷調用腳本)。 –