在 gem 中创建迁移

Create migration in gem

我决定在 ruby 中创建我的第一个 gem,但我遇到了问题。如果用户将我的 gem 添加到他们的 gem 文件,我想在数据库中创建一个新的 table。

我认为唯一的解决方案是创建一个 rake 任务,该任务在迁移时运行自定义脚本。我对吗?你知道任何关于使用普通 Ruby 修改数据库的教程吗?如何创建此脚本?还有其他解决办法吗?

您可以尝试这样的操作:

ActiveRecord::Base.establish_connection adapter: 'sqlite3', database: 'database.db'

ActiveRecord::Schema.define do
  unless ActiveRecord::Base.connection.tables.include? 'tags'
    create_table :tags do |table|
      table.column :tag, :string
    end
  end
end

当然,这里我提供的是数据库的直接属性,因为这对我来说只是一个小脚本。例如,您可以从 YAML 或 ENV 变量中获取它。