Class: Roda::Project::Bin::Generators::Migration
- Inherits:
-
Roda::Project::Bin::Generator
- Object
- Generator
- Roda::Project::Bin::Generator
- Roda::Project::Bin::Generators::Migration
- Defined in:
- lib/roda/project/bin/generators/migration.rb,
lib/roda/project/bin/generators/migration/code_builder.rb,
lib/roda/project/bin/generators/migration/field_parser.rb,
lib/roda/project/bin/generators/migration/action_detector.rb
Defined Under Namespace
Classes: ActionDetector, CodeBuilder, FieldParser
Instance Attribute Summary
Attributes inherited from Generator
Instance Method Summary collapse
Methods inherited from Roda::Project::Bin::Generator
Methods inherited from Generator
Methods included from Helpers::Ids
#api_id, #fullstack_id, #id_to_string, #minimal_id, #minitest_id, #mysql_id, #postgresql_id, #rspec_id, #sqlite_id
Methods included from Helpers::Template
#cp_dir, #cp_file, #ensure_and_get_path, #erb_cp_dir, #erb_cp_file, #templates_root
Constructor Details
This class inherits a constructor from Roda::Project::Generator
Instance Method Details
#call ⇒ Object
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 |
# File 'lib/roda/project/bin/generators/migration.rb', line 8 def call if migration_name.nil? || migration_name.empty? puts "Usage: bin/roda g migration your_migration_name" exit 1 end puts "* creating migration" FileUtils.mkdir_p(migrations_path) unless File.directory?(migrations_path) existing_migrations = Dir.glob(File.join(migrations_path, "*.rb")) max_number = existing_migrations.map do |file| File.basename(file).match(/^(\d+)/)&.captures&.first.to_i end.max || 0 next_number = (max_number + 1).to_s.rjust(3, "0") formatted_name = underscore(migration_name) filename = File.join(migrations_path, "#{next_number}_#{formatted_name}.rb") detection = ActionDetector.new(migration_name, args: field_args).detect fields = FieldParser.new(field_args).parse content = CodeBuilder.new(detection: detection, fields: fields).build File.write(filename, content) (filename) end |
#field_args ⇒ Object
43 44 45 |
# File 'lib/roda/project/bin/generators/migration.rb', line 43 def field_args @field_args ||= @args[1..] || [] end |
#migration_name ⇒ Object
39 40 41 |
# File 'lib/roda/project/bin/generators/migration.rb', line 39 def migration_name @migration_name ||= @args[0] end |
#migrations_path ⇒ Object
35 36 37 |
# File 'lib/roda/project/bin/generators/migration.rb', line 35 def migrations_path "db/migrations" end |