我只使用一个文件进行sinatra应用程序( sinatra.rb ),我有一条路线:
get '/ajax2?' do
my_function()
end
我可以从另一个ruby脚本(cron.rb)和传递所有参数来调用my_function()
吗?因此,如果我从浏览器访问它,那么此路由中的代码执行方式是否相同?
我需要从cron工作中调用它。
答案 0 :(得分:1)
<强>更新强>:
非常确定你需要的是一个模块,就像这样,在 my_module.rb :
module MyModule
def my_function
end
end
然后在 app.rb :
中require './my_module.rb'
helpers MyModule
您可以在cron.rb中要求并包含该模块
如果我正确地按照您的问题(不确定),请将您的代码拉出到扩展名中,这样您的目录结构如下所示:
myapp/
|-lib/
|-my_extension.rb
|-app.rb
然后在 my_extension.rb :
module Sinatra
module MyExtension
def self.registered(app)
app.get '/ajax2?' do
"hallo"
end
end
end
register MyExtension
end
并在 app.rb 中,您只需要:
require './lib/my_extension.rb'
这是第一步,然后将扩展内容移动到gem中,您可以在任何sinatra应用程序中的Gemfile中使用gem。