Module: SeedDump::Environment

Included in:
SeedDump
Defined in:
lib/seed_dump/environment.rb

Instance Method Summary collapse

Instance Method Details

#dump_using_environment(env = {}) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/seed_dump/environment.rb', line 4

def dump_using_environment(env = {})
  Rails.application.eager_load!

  models = retrieve_models(env) - retrieve_models_exclude(env)

  # Sort models by foreign key dependencies (issues #78, #83)
  # This ensures models are dumped in the correct order so that
  # seeds can be imported without foreign key violations.
  models = sort_models_by_dependencies(models)

  global_limit = retrieve_limit_value(env)
  model_limits = retrieve_model_limits_value(env)
  append = retrieve_append_value(env)
  models.each do |model|
    # Determine the limit to apply for this model:
    # 1. Check MODEL_LIMITS for a per-model override
    # 2. Fall back to global LIMIT
    # 3. If neither, no limit is applied
    limit = limit_for_model(model, model_limits, global_limit)
    model = model.limit(limit) if limit.present?

    SeedDump.dump(model,
                  append: append,
                  batch_size: retrieve_batch_size_value(env),
                  exclude: retrieve_exclude_value(env),
                  file: retrieve_file_value(env),
                  group_sti_by_class: retrieve_group_sti_by_class_value(env),
                  header: retrieve_header_value(env),
                  import: retrieve_import_value(env),
                  insert_all: retrieve_insert_all_value(env),
                  upsert_all: retrieve_upsert_all_value(env))

    append = true # Always append for every model after the first
                  # (append for the first model is determined by
                  # the APPEND environment variable).
  end
end