外部文件中的sinatra助手

equ*_*nt8 15 sinatra

我的主要Sinatra project_name.rb中有很多帮助器,我想将它们移到外部文件中,这样做的最佳做法是什么?

来自./preject_name.rb

   helpers do
     ...#bunch of helpers
   end
Run Code Online (Sandbox Code Playgroud)

例如./helpers/something.rb

谢谢

kgp*_*per 29

简单和推荐的方式:

module ApplicationHelper

# methods

end

class Main < Sinatra::Base

  helpers ApplicationHelper

end
Run Code Online (Sandbox Code Playgroud)


Dav*_*Sag 14

唉,如果像我一样,你正在构建一个模块化的 Sinatra应用程序,它比简单地移动helpers到另一个文件要复杂一点.

我让它工作的唯一方法如下.

首先在你的应用程序中(我会称之为my_modular_app.rb)

require 'sinatra/base'
require 'sinatra/some_helpers'

class MyModularApp < Sinatra::Base
  helpers Sinatra::SomeHelpers

  ...

end
Run Code Online (Sandbox Code Playgroud)

然后创建文件夹结构./lib/sinatra/并创建some_helpers.rb如下:

require 'sinatra/base'

module Sinatra
  module SomeHelpers

    def help_me_world
      logger.debug "hello from a helper"
    end

  end

  helpers SomeHelpers

end
Run Code Online (Sandbox Code Playgroud)

这样做可以简单地将所有帮助程序拆分为多个文件,从而在更大的项目中更加清晰.


sca*_*ble 8

正如你自己说的那样:

helpers块移动到另一个文件中并将require其移动到您需要的位置.

#helpers.rb
helpers do
...
end

#project_name.rb
require 'path/to/helpers.rb'
Run Code Online (Sandbox Code Playgroud)