これは単なる基本的な Ruby であるため、require
またはを使用できます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、モデル、およびコントローラーの直下にあるすべてのファイルがロードされます。しかし、いつ、どのようにファイルをロードするかについて、より細かく制御したい場合があります。その場合は、1 行に 1 つずつ要求する方が適切です。
Datamapper 定義をすべて 1 つのファイルに入れることはお勧めしません。それらをモデルとしてグループ化すると、おそらくより良い結果が得られます。Person は、Person のすべての定義と crud アクションが存在する 1 つのファイルを取得します。そうすれば、Person は 2 つのファイルに分散するのではなく、分離され自己完結型になります。