如何在Rails之外使用ActiveRecord?

13

我正在构建一个基于六边形架构的Rails应用程序。

我的适配器之一是存储适配器(作为gem维护),它管理对数据库的访问,并为Rails应用程序提供了在数据库中存储和查询数据的简单接口。

我想在此gem中使用ActiveRecord,并使用所有rake任务(create、migrate、drop、rollback)来管理数据库。

如何在没有Rails的情况下使用AR,但同时又能使用所有rake任务呢?


1
可能是如何在Rails之外的Ruby脚本中使用ActiveRecord?的重复问题。 - Mogsdad
如果你想要一个能够工作的东西,这里有一个例子。运行bundle install & migrate你的数据库。你就完成了。请查看README获取更多信息。https://github.com/slindsey3000/ContactManager - slindsey3000
相关:在Rails之外生成迁移 - Franklin Yu
2个回答

18

安装它就像安装其他 gem 一样

gem install activerecord

然后你可以像这样在某个地方进行配置

ActiveRecord::Base.establish_connection(
  :adapter  => 'mysql',
  :database => 'database',
  :username => 'user',
  :password => 'password',
  :host     => 'localhost')

模型可以像平常一样从ActiveRecord::Base继承。

您将获得所有Rake任务,但是需要进行一些额外的配置,因为您没有Rails。以下是在activerecord中配置这些内容的链接。

数据库任务


谢谢!这是我目前为止的进展。我的问题是在我的 gem 中也拥有管理数据库的所有 rake 任务。 - Kamil Lelonek
这里有一个相关的 Github 问题讨论您的用例,并提供了示例代码。https://github.com/rails/rails/issues/11609 - Toby L Welch-Richards

2

更新后的解决方案是standalone_migrations。基本上,在为gem进行配置并创建配置之后,您就可以访问所有ActiveRecord功能。 包括Rake任务!

此外,我还制作了一个小型生成器,用于支持开箱即用的ActiveRecord脚手架: nrb - Ninja Ruby


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接