如何从Sinatra应用程序运行外部Ruby脚本
问题描述:
我在我的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
答
您可以使用require
或require_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
啊是的,我完全忘记了“加载”(它需要全名,但允许您不断调用脚本)。 –
请勿使用'ruby path/to/file'。使用你想运行代码的Ruby解释器的绝对路径。如果没有,系统必须搜索环境PATH才能找到它,并且如果PATH不包括Ruby所在的地方,则命令将失败。通常,在Web服务器上未设置适当的路径,因为服务器作为受限用户运行。 –
表示同意,但为了不在邮件中张贴我的绝对路径,我将其留在了外面。 – aronlmin