Activerecord 在Rails之外生成迁移

Activerecord 在Rails之外生成迁移,activerecord,migration,Activerecord,Migration,我在Rails外部使用ActiveRecord。我想要一个程序来生成迁移的框架(以及一个收集和维护它们的系统) 有人能提个建议吗?在非Rails项目中使用Rails数据库迁移有一个很好的方法。它的名字是“独立的_迁移” 这里有一个链接 另请看一看新的如果您不喜欢使用rake,但仍然获得ActiveRecord::Migration的系统部分,那么您可以使用以下方法来处理普通ruby(没有任何rails)的起伏: 需要“活动记录” 需要“基准” #迁移方法,该方法不使用db/migrate中的文件

我在Rails外部使用ActiveRecord。我想要一个程序来生成迁移的框架(以及一个收集和维护它们的系统)


有人能提个建议吗?

在非Rails项目中使用Rails数据库迁移有一个很好的方法。它的名字是“独立的_迁移”

这里有一个链接


另请看一看新的

如果您不喜欢使用rake,但仍然获得ActiveRecord::Migration的系统部分,那么您可以使用以下方法来处理普通ruby(没有任何rails)的起伏:

需要“活动记录”
需要“基准”
#迁移方法,该方法不使用db/migrate中的文件,而是使用内存迁移
#基于ActiveRecord::Migrator::migrate
def迁移(迁移,目标版本=nil)
方向=案例
何时目标_version.nil?
:向上
何时(ActiveRecord::Migrator::current_version==目标_version)
返回#什么也不做
当ActiveRecord::Migrator::当前\u版本>目标\u版本时
:向下
其他的
:向上
结束
ActiveRecord::Migrator.new(方向、迁移、目标版本)。迁移
放置“当前版本:{ActiveRecord::Migrator::当前版本}”
结束
#MigrationProxy处理从文件加载迁移,我们重用它
#创建我们提供的迁移类的实例
类MigrationClassProxy 
类CreateSolutionTable  
类CreateProductFields'sqlite3',
:数据库=>'XXX.db'
)
#播放所有迁移(rake db:migrate)
迁移(迁移,迁移.last.version)
# ... 或者撤消它们(rake db:migrate VERSION=0)
迁移(迁移,0)
类ApplicationRecord
还有另一种宝石叫做。此gem提供以下任务:

  • rake数据库:创建
  • rakedb:create_migration[name]
  • rake db:drop
  • rake db:environment:set
  • rake db:fixture:load
  • rakedb:migrate
  • rakedb:migrate:status
  • rake数据库:回滚
  • rakedb:schema:cache:clear
  • rakedb:schema:cache:dump
  • rakedb:schema:dump
  • rakedb:schema:load
  • rake db:seed
  • rake数据库:设置
  • rakedb:structure:dump
  • rake数据库:结构:加载
  • rake数据库:版本
您只需安装它并添加一个包含内容的
Rakefile

load 'tasks/otr-activerecord.rake'
OTR::ActiveRecord.configure_from_file! 'config/database.yml'

我更喜欢这个gem而不是
active\u record\u迁移
或独立迁移,因为这两个gem依赖于
railties
,后者几乎是整个Rails。例如,Nokogiri需要很长的编译时间,并且占用了大量的空间。

我给出了一个关于如何在Rails之外使用活动记录的最小示例。非Rails(和非Ruby)项目中的Rails迁移(独立迁移)

(支撑轨>=5.2)


您可以在本回购协议中引用Rake文件。

虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接以供参考。如果链接页面发生更改,则仅链接的答案可能无效。
load 'tasks/otr-activerecord.rake'
OTR::ActiveRecord.configure_from_file! 'config/database.yml'