我正在尝试使用Sinatra和Datamapper创建一个共享数据库的可靠Web应用程序的好方法。我开始只使用一个应用程序,但我正在考虑将管理方面拆分为它自己的应用程序,并在config.ru文件中使用不同的映射。
因此,config.ru会将根路由映射到主应用程序,将'/ admin'映射到Admin应用程序。主应用程序将负责将数据从数据库显示给任何用户,而管理员应用程序负责允许管理员向数据库添加内容。我的理由是让管理员应用程序具有更大的灵活性和可重用性。
主应用程序有Datamapper类负责定义我的模型,但我相信我可以毫无问题地将它移动到管理应用程序。有没有办法/理由将它移动到它自己独立的.rb文件中?
这个平台显然很新,但我很喜欢它。任何帮助是极大的赞赏。
答案 0 :(得分:2)
你可以拥有一个拥有尽可能多的sinatra应用程序的项目。对于您的项目,您可以这样设置:
# site.rb
require 'config/boot'
class Site < Sinatra::Base
...
end
# admin.rb
require 'config/boot'
class Admin < Sinatra::Base
...
end
# config/boot.rb
require 'model/user.rb'
require 'model/post.rb'
# config.ru
require 'admin'
require 'site'
run Rack::URLMap.new("/" => Site.new, "/admin" => Admin.new)
关键是将两个应用程序放在同一项目/版本控制中。