【问题标题】:In Sinatra, share code with between routes and rake tasks?在 Sinatra 中,在路由和 rake 任务之间共享代码?
【发布时间】:2013-11-15 23:46:39
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby sinatra


    【解决方案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
    

    在你的 rake 任务中,做同样的事情:

    # Rakefile
    
    require_relative 'mailer'
    include Mailer
    
    task :mailer do
      common_method0
    
      # ...
    end
    

    【讨论】:

      猜你喜欢
      • 2012-05-09
      • 2016-11-05
      • 2014-09-24
      • 1970-01-01
      • 2014-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-28
      相关资源
      最近更新 更多