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

Ruby 在Sinatra中,在路由和rake任务之间与共享代码?,ruby,sinatra,Ruby,Sinatra,我们希望有一些维护任务,利用路由或助手中使用的代码 在模块化Sinatra应用程序中实现这一点的最佳方法是什么 例如,我们有一个邮递员。我们希望从路由调用它。但我们也希望通过rake任务定期发送电子邮件 将通用代码重构为一个模块(或类)并转换为另一个源文件: # mailer.rb module Mailer def common_method0 end def common_method1 end end 在您的Sinatra应用程序中,需要mailer.rb并在需要的模

我们希望有一些维护任务,利用路由或助手中使用的代码

在模块化Sinatra应用程序中实现这一点的最佳方法是什么


例如,我们有一个邮递员。我们希望从路由调用它。但我们也希望通过rake任务定期发送电子邮件

将通用代码重构为一个模块(或类)并转换为另一个源文件:

# 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
在rake任务中,执行相同的操作:

# Rakefile

require_relative 'mailer'
include Mailer

task :mailer do
  common_method0

  # ...
end

将公共代码重构为一个模块(或类)并重构为另一个源文件:

# 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
在rake任务中,执行相同的操作:

# Rakefile

require_relative 'mailer'
include Mailer

task :mailer do
  common_method0

  # ...
end