两个Sinatra应用程序,共享数据映射器DB

时间:2011-08-01 23:53:54

标签: ruby sinatra datamapper

我正在尝试使用Sinatra和Datamapper创建一个共享数据库的可靠Web应用程序的好方法。我开始只使用一个应用程序,但我正在考虑将管理方面拆分为它自己的应用程序,并在config.ru文件中使用不同的映射。

因此,config.ru会将根路由映射到主应用程序,将'/ admin'映射到Admin应用程序。主应用程序将负责将数据从数据库显示给任何用户,而管理员应用程序负责允许管理员向数据库添加内容。我的理由是让管理员应用程序具有更大的灵活性和可重用性。

主应用程序有Datamapper类负责定义我的模型,但我相信我可以毫无问题地将它移动到管理应用程序。有没有办法/理由将它移动到它自己独立的.rb文件中?

这个平台显然很新,但我很喜欢它。任何帮助是极大的赞赏。

1 个答案:

答案 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)

关键是将两个应用程序放在同一项目/版本控制中。