这只是基本的 Ruby,所以你可以使用require
or require_relative
。
文件的确切组织取决于您,但这是我的偏好:
|- app.rb # This merely require_relative's all the other ruby-files, see below.
|- README.md
|- rackup.ru
|- lib/
| |- env.rb #contains settings and environment variables and such.
| |-
|- models/
| |- person.rb # Defines datamapper fields, helper and validators for Person.
|- controllers/
| |- person_controller.rb # Defines `put '/protected/person/:id' do` and other routing.
\- views/
|- layout.haml
\- person_show.haml
再次,这取决于你。我强烈建议不要过早地组织过度。例如,控制器可以被省略,只要它们适合 app.rb。一旦它们从那里长出来并且您希望将它们分开,然后才引入控制器文件夹。
app.rb
将是一个不需要所有库的文件:
require "sinatra"
require "datamapper"
Dir.glob(File.join("{lib,models,controllers}", "*.rb")).each{|f| require File.realpath(f)}
这将直接加载 lib、模型和控制器下的所有文件。但是您可能需要更多地控制文件的加载时间和方式;在这种情况下,要求它们每行一个是更好的选择。
我建议不要将 Datamapper 定义全部放在一个文件中。将它们分组为模型可能会更好:Person 获得一个文件,其中包含 Person 的所有定义和 crud 操作。这样 Person 是孤立和自包含的,而不是分布在两个文件中。