【问题标题】:How to run external Ruby scripts from a Sinatra application如何从 Sinatra 应用程序运行外部 Ruby 脚本
【发布时间】:2016-06-15 06:32:08
【问题描述】:

我在我的 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 服务器上设置适当的路径,因为服务器以受限用户身份运行。
  • 同意,但为了不在帖子中发布我的绝对路径,我将其省略了。

标签: ruby windows google-chrome sinatra


【解决方案1】:

您可以使用requirerequire_relative(取决于您的文件是位于静态位置还是相对于该文件)。最后也不需要添加.rb

require 'sinatra'

get '/' do
  erb :home
end

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

【讨论】:

  • 此外,更改加载要求并添加 rb 也使事情变得更顺畅
  • 啊,是的,我完全忘记了load(它需要全名,但允许您不断调用脚本)。
猜你喜欢
  • 2018-02-22
  • 2023-04-04
  • 2021-09-19
  • 2020-09-05
  • 1970-01-01
  • 2011-08-10
  • 2016-02-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多