Class: BetterSeeder::Exporters::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/better_seeder/exporters/base.rb

Direct Known Subclasses

Csv, Json, Sql

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data, output_path:, table_name: 'my_table') ⇒ Base

Inizializza l’exporter.

Esempio d’uso:

data = [
  { id: 1, name: "Alice", email: "[email protected]" },
  { id: 2, name: "Bob", email: "[email protected]" }
]

json_exporter = BetterSeeder::Performers::JsonExporter.new(data, output_path: 'users', table_name: 'users')
json_exporter.export

Parameters:

  • data (Array<Hash>)

    I dati da esportare.

  • output_path (String)

    Nome del file (senza estensione).

  • table_name (String) (defaults to: 'my_table')

    Nome della tabella (usato in SqlExporter).



27
28
29
30
31
32
# File 'lib/better_seeder/exporters/base.rb', line 27

def initialize(data, output_path:, table_name: 'my_table')
  @data        = data
  # Utilizza il preload_path definito nella configurazione BetterSeeder (impostato nell'initializer).
  @output_path = File.join(BetterSeeder.configuration.preload_path, output_path)
  @table_name  = table_name
end

Instance Attribute Details

#dataObject (readonly)

I dati da esportare. output_path: nome del file (senza estensione) da concatenare al preload_path configurato. table_name: (opzionale) nome della tabella, utile ad esempio per SqlExporter.



11
12
13
# File 'lib/better_seeder/exporters/base.rb', line 11

def data
  @data
end

#output_pathObject (readonly)

I dati da esportare. output_path: nome del file (senza estensione) da concatenare al preload_path configurato. table_name: (opzionale) nome della tabella, utile ad esempio per SqlExporter.



11
12
13
# File 'lib/better_seeder/exporters/base.rb', line 11

def output_path
  @output_path
end

#table_nameObject (readonly)

I dati da esportare. output_path: nome del file (senza estensione) da concatenare al preload_path configurato. table_name: (opzionale) nome della tabella, utile ad esempio per SqlExporter.



11
12
13
# File 'lib/better_seeder/exporters/base.rb', line 11

def table_name
  @table_name
end

Instance Method Details

#ensure_output_directoryObject

Verifica che la directory di output esista; se non esiste, la crea.



43
44
45
# File 'lib/better_seeder/exporters/base.rb', line 43

def ensure_output_directory
  FileUtils.mkdir_p(output_directory)
end

#exportObject

Metodo astratto per effettuare l’export.

Raises:

  • (NotImplementedError)


62
63
64
# File 'lib/better_seeder/exporters/base.rb', line 62

def export
  raise NotImplementedError, 'Subclasses must implement the export method'
end

#extensionObject

Metodo astratto per ottenere l’estensione del file (es. “.json”, “.csv”, “.sql”). Le classi derivate devono implementarlo.

Raises:

  • (NotImplementedError)


57
58
59
# File 'lib/better_seeder/exporters/base.rb', line 57

def extension
  raise NotImplementedError, 'Subclasses must implement #extension'
end

#full_output_pathString

Costruisce il percorso completo del file di output, combinando la directory, l’output_path e l’estensione.

Returns:

  • (String)

    il percorso completo del file.



50
51
52
53
# File 'lib/better_seeder/exporters/base.rb', line 50

def full_output_path
  ensure_output_directory
  "#{output_path}#{extension}"
end

#output_directoryString

Restituisce la directory in cui salvare i file. In questo caso, utilizza la configurazione BetterSeeder.configuration.preload_path.

Returns:

  • (String)

    il percorso della directory di output.



38
39
40
# File 'lib/better_seeder/exporters/base.rb', line 38

def output_directory
  BetterSeeder.configuration.preload_path.to_s
end