2016-06-14 93 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

啊是的,我完全忘记了“加载”(它需要全名,但允许您不断调用脚本)。 –