Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何将Sinatra配置为使用structure.sql而不是schema.rb?_Ruby_Activerecord_Sinatra_Database Schema - Fatal编程技术网

Ruby 如何将Sinatra配置为使用structure.sql而不是schema.rb?

Ruby 如何将Sinatra配置为使用structure.sql而不是schema.rb?,ruby,activerecord,sinatra,database-schema,Ruby,Activerecord,Sinatra,Database Schema,我有一个Sinatra应用程序,我正在使用ActiveRecord设置一个数据库 由于该数据库的一个怪癖(即字符串主键),我想使用SQL模式(structure.SQL)而不是Ruby模式(schema.rb)。我不介意这限制了我使用特定的数据库风格,不管怎样,我们都使用Postgres 为了在Rails中实现这一点,我将把config.active\u record.schema\u format=:sql放在config/application.rb中。如何在Sinatra中执行相同的操作?

我有一个Sinatra应用程序,我正在使用ActiveRecord设置一个数据库

由于该数据库的一个怪癖(即字符串主键),我想使用SQL模式(
structure.SQL
)而不是Ruby模式(
schema.rb
)。我不介意这限制了我使用特定的数据库风格,不管怎样,我们都使用Postgres


为了在Rails中实现这一点,我将把
config.active\u record.schema\u format=:sql
放在
config/application.rb
中。如何在Sinatra中执行相同的操作?

使用Sinatra手动配置数据库很容易。我们喜欢在MySQL中构建表,而不是使用ActiveRecord迁移

您必须手动创建数据库模型,而不是使用生成器,并且您将添加此行来管理连接:

ActiveRecord::Base.establish_connection(database_settings)

这非常简单。我们通常从YAML文件中读取设置。当您想要编写自动化测试时,它会变得复杂。这是我写的一个博客。

使用Sinatra手动配置数据库很容易。我们喜欢在MySQL中构建表,而不是使用ActiveRecord迁移

您必须手动创建数据库模型,而不是使用生成器,并且您将添加此行来管理连接:

ActiveRecord::Base.establish_connection(database_settings)

这非常简单。我们通常从YAML文件中读取设置。当您想要编写自动化测试时,它会变得复杂。这是我写的一个博客。

由于您仍在使用active record,您只需将下一行添加到配置中(我将其放在
config/initializers/active_record.rb
下)


由于您仍在使用active record,所以只需将下一行添加到配置中(我将其放在
config/initializers/active_record.rb
下)


这不是Sinatra的问题,而是ActiveRecord的问题。西纳特拉只是一个无辜的旁观者。你可能想看看如何使用帕德里诺。它位于Sinatra的顶部,但提供了许多类似发电机和助手的轨道。Sinatra非常棒,可以与DBM一起工作,但最终你会编写更多的代码。这是一个Sinatra问题,因为虽然在Rails框架中很容易找到如何实现这一点(如上所述),但这并不适用于Sinatra——或者,如果适用,则需要大量的手动设置。不,Sinatra与DBMs完全没有关系。您必须结合您选择的数据库连接。通常,我们使用Sequel或DataMapper来实现这一点,不过ActiveRecord也可以做到。不过,西纳特拉并不知道数据库,只有其他的宝石知道。在Sinatra中没有任何方法会关心,只有底层的Ruby语言。Sinatra是专门用于创建URL处理程序的DSL。另一方面,Rails与ActiveRecord紧密耦合,并期望DB连接正常工作。但这不是Rails的问题,因此也不是Sinatra的问题。请检查,它很好地涵盖了DSL。了解代码的哪些部分做了什么非常重要,特别是在询问代码时。这不是Sinatra的问题,而是ActiveRecord的问题。西纳特拉只是一个无辜的旁观者。你可能想看看如何使用帕德里诺。它位于Sinatra的顶部,但提供了许多类似发电机和助手的轨道。Sinatra非常棒,可以与DBM一起工作,但最终你会编写更多的代码。这是一个Sinatra问题,因为虽然在Rails框架中很容易找到如何实现这一点(如上所述),但这并不适用于Sinatra——或者,如果适用,则需要大量的手动设置。不,Sinatra与DBMs完全没有关系。您必须结合您选择的数据库连接。通常,我们使用Sequel或DataMapper来实现这一点,不过ActiveRecord也可以做到。不过,西纳特拉并不知道数据库,只有其他的宝石知道。在Sinatra中没有任何方法会关心,只有底层的Ruby语言。Sinatra是专门用于创建URL处理程序的DSL。另一方面,Rails与ActiveRecord紧密耦合,并期望DB连接正常工作。但这不是Rails的问题,因此也不是Sinatra的问题。请检查,它很好地涵盖了DSL。了解代码的哪些部分做了什么非常重要,特别是在询问代码时。你不是在设置Sinatra来做这件事,而是在设置ActiveRecord来做这件事。Sinatra只是一个用于处理URL的DSL。你不是在设置Sinatra来处理URL,而是在设置ActiveRecord来处理URL。Sinatra只是用于处理URL的DSL。