0

我只将一个文件用于 sinatra 应用程序 ( sinatra.rb ),其中我有一条路线:

get '/ajax2?' do
  my_function()
end

我可以my_function()另一个 ruby​​ 脚本(cron.rb)调用并传递所有参数吗?那么,如果我从浏览器访问它,这条路线中的任何代码都会以相同的方式执行吗?

我需要从 cron 工作中调用它。

  • ruby 1.8.7 (2010-08-16 补丁级别 302) [i386-mingw32]
  • 西纳特拉 (1.3.2)
  • sinatra 高级路由 (0.5.1)
  • sinatra-reloader (0.5.0)
4

1 回答 1

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。

于 2012-05-16T05:06:44.057 回答