我有多个rails应用程序与同一个后端通信,我希望它们共享一些迁移

我试图创建一个文件db/migrate/my_migration.rb但在我的主要应用程序中,如果我这样做:

  rake db:migrate

它不会加载它们.

在谷歌上搜索了一番之后,似乎有大约recent work条,似乎this条已经被合并到rails master.

谢谢

推荐答案

我要做的是添加一个InstallGenerator,将迁移添加到Rails站点本身.它的行为和你提到的不太一样,但就目前而言,对我来说,它已经足够好了.

一个小指南:

首先,创建文件夹lib\generators\<your-gem-name>\install,并在该文件夹内创建一个名为install_generator.rb的文件,代码如下:

require 'rails/generators/migration'

module YourGemName
  module Generators
    class InstallGenerator < ::Rails::Generators::Base
      include Rails::Generators::Migration
      source_root File.expand_path('../templates', __FILE__)
      desc "add the migrations"

      def self.next_migration_number(path)
        unless @prev_migration_nr
          @prev_migration_nr = Time.now.utc.strftime("%Y%m%d%H%M%S").to_i
        else
          @prev_migration_nr += 1
        end
        @prev_migration_nr.to_s
      end

      def copy_migrations
        migration_template "create_something.rb", "db/migrate/create_something.rb"
        migration_template "create_something_else.rb", "db/migrate/create_something_else.rb"
      end
    end
  end
end

lib/generators/<your-gem-name>/install/templates中添加两个包含迁移的文件,例如,使用名为create_something.rb的文件:

class CreateAbilities < ActiveRecord::Migration
  def self.up
    create_table :abilities do |t|
      t.string  :name
      t.string  :description
      t.boolean :needs_extent      
      t.timestamps
    end
  end

  def self.down
    drop_table :abilities
  end
end

然后,当你的Ruby 被添加到某个应用程序中时,你就可以这样做了

rails g <your_gem_name>:install

这将增加迁移,然后你只需要做rake db:migrate次.

希望这有帮助.

Ruby-on-rails相关问答推荐

刺激中的Rails 7和 bootstrap 错误-无法解析模块说明符 bootstrap

Rails Heroku部署:预编译assets资源 失败.SassC::语法错误

Ruby - 如何删除目录中早于 X 天的所有文件?

如何保持 en.yml DRY?

ruby on rails 中的自定义关联

Rails 控制台 - 更新 Gem 后的弃用通知

设计 token_authenticable 已弃用,有什么替代方案?

NameError:未定义的局部变量或方法记录器

如何使用 RSpec 和 Devise/CanCan 进行集成测试?

您将如何在 Ruby on Rails 应用程序中使用 rSpec 测试观察者?

Rails:参数太少

如何按值按降序对哈希进行排序并在 ruby​​ 中输出哈希?

Rails:仅当值存在时如何验证格式?

对象不支持此属性或方法 Rails Windows 64bit

如何在 Ruby 中生成随机日期?

Rails 3.0 中的 f.error_messages

Rails 5:重命名表迁移

如何仅使用 PostgreSQL 创建简单的模糊搜索?

在任何来源中都找不到 thread_safe-0.3.0

使用 Rspec 测试关联的正确方法?