Keep a table out of schema.rb during migrations

前端 未结 2 1996
鱼传尺愫
鱼传尺愫 2020-12-11 01:31

As a follow-on to an earlier question about not reloading a huge, persistent table when I run my tests, I need to keep this table out of schema.rb when I run my migrations.

相关标签:
2条回答
  • 2020-12-11 02:01

    Turns out there's an option for just this situation!

    I found it in activerecord-2.3.4/lib/active_record/schema_dumper.rb:

    ##
    # :singleton-method:
    # A list of tables which should not be dumped to the schema. 
    # Acceptable values are strings as well as regexp.
    # This setting is only used if ActiveRecord::Base.schema_format == :ruby
    cattr_accessor :ignore_tables 
    @@ignore_tables = []
    

    So all I had to do was stick this at the end of environment.rb:

    ActiveRecord::SchemaDumper.ignore_tables = ["table_name"]
    

    The ignore_tables option will accept regular expressions. For example, to ignore all tables starting with "MS":

    ActiveRecord::SchemaDumper.ignore_tables = [/^MS/]
    
    0 讨论(0)
  • 2020-12-11 02:13

    I think that if you keep the migration to generate the table out of your migrations folder, then it won't get run, and in turn won't be used to generate the development database, which should keep it out of the schema.rb.

    You can probably figure out some way to run that single migration if you need to outside of the rake task (should just be establishing the connection and then running up on the migration class)

    0 讨论(0)
提交回复
热议问题