【问题标题】:Two Sinatra Apps, shared datamapper DB两个 Sinatra 应用程序,共享数据映射器数据库
【发布时间】:2011-08-01 23:53:53
【问题描述】:

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

因此,config.ru 会将根路由映射到主应用程序,并将“/admin”映射到管理应用程序。主应用程序将负责向任何用户显示来自数据库的数据,而管理应用程序负责允许管理员向数据库添加内容。我这样做的理由是让我在管理应用程序中获得更大的灵活性和可重用性。

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

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

【问题讨论】:

    标签: ruby sinatra datamapper


    【解决方案1】:

    您可以拥有一个项目,其中包含任意数量的 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)
    

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

    【讨论】:

    • 还没有机会按照这些思路将一些东西放在一起,但这是有道理的。非常感谢!你能解释一下“run Rack::URLMap.new...”这一行吗?我以前没见过这样的 config.ru...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 2011-08-07
    • 2020-09-04
    相关资源
    最近更新 更多