在Sinatra中,在路由和rake任务之间共享代码?

时间:2013-11-15 09:18:12

标签: ruby sinatra

我们希望有一些维护任务可以利用路由或帮助程序中使用的代码。

在模块化Sinatra应用程序中实现此目的的最佳方法是什么?

例如,我们有一个邮件程序。我们希望从路线调用它。但我们也想从rake任务发送定期发送的电子邮件。

1 个答案:

答案 0 :(得分:1)

将公共代码重构为模块(或类)到不同的源文件中:

# mailer.rb

module Mailer
  def common_method0
  end

  def common_method1
  end
end

在你的Sinatra应用程序中,需要mailer.rb并在你需要的模块中混合:

require_relative 'mailer'

# ...

helpers do
  include Mailer

  # other helpers
end

在您的佣金任务中,执行相同的操作:

# Rakefile

require_relative 'mailer'
include Mailer

task :mailer do
  common_method0

  # ...
end