【发布时间】:2017-03-17 00:50:48
【问题描述】:
我有一个 Sinatra 应用程序,我正在使用 ActiveRecord 设置一个数据库。
由于这个数据库的一个怪癖(即字符串主键),我想使用 SQL 模式(structure.sql)而不是 Ruby 模式(schema.rb)。我不介意这会限制我使用特定的数据库风格,无论如何我们都使用 Postgres。
为了在 Rails 中实现这一点,我会将config.active_record.schema_format = :sql 放入config/application.rb。我如何在 Sinatra 中做同样的事情?
【问题讨论】:
-
这不是 Sinatra 问题,而是 ActiveRecord 问题。 Sinatra 只是一个无辜的旁观者。
-
您可能想看看使用 Padrino。它位于 Sinatra 之上,但提供了许多类似 Rails 的生成器和助手。 Sinatra 很棒,可以与 DBM 一起工作,但您最终会编写更多代码。
-
这 is 是一个 Sinatra 问题,因为虽然很容易在 Rails 框架中找到如何做(如上所述),但这不适用于 Sinatra -或者如果确实如此,则需要进行大量手动设置才能使其应用。
-
不,Sinatra 与 DBM 完全没有联系。您必须合并您选择的数据库连接。通常我们使用 Sequel 或 DataMapper 来做这件事,尽管 ActiveRecord 也可以做到。尽管如此,Sinatra 对数据库一无所知,只有其他 Gems 才知道。 Sinatra 中没有需要关心的方法,只有底层的 Ruby 语言。 Sinatra 是专门用于创建 URL 处理程序的 DSL。另一方面,Rails 与 ActiveRecord 紧密耦合,并期望 DB 连接能够正常工作。但这不是 Rails 问题,因此也不是 Sinatra 问题。
-
检查README,它很好地覆盖了DSL。了解代码的哪些部分做什么非常重要,尤其是在 SO 上询问该代码时。
标签: ruby activerecord sinatra database-schema