Class: Roda::Project::Bin::Generators::Migration

Inherits:
Roda::Project::Bin::Generator show all
Defined in:
lib/roda/project/bin/generators/migration.rb

Instance Method Summary collapse

Methods inherited from Roda::Project::Bin::Generator

#templates_root

Methods inherited from Generator

#initialize

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, #erb_cp_dir, #erb_cp_file, #templates_root

Constructor Details

This class inherits a constructor from Roda::Project::Generator

Instance Method Details

#callObject



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
# File 'lib/roda/project/bin/generators/migration.rb', line 6

def call
  if migration_name.nil? || migration_name.empty?
    puts "Usage: bin/roda g migration your_migration_name"
    exit 1
  end

  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")

  filename = File.join(migrations_path, "#{next_number}_#{migration_name}.rb")

  content = <<~RUBY
      Sequel.migration do
        up do
# add your migration here
        end

        down do
# remove your migration here
        end
      end
  RUBY

  File.write(filename, content)
  puts "* created migration: #{filename}"
end

#migration_nameObject



42
43
44
# File 'lib/roda/project/bin/generators/migration.rb', line 42

def migration_name
  @migration_name ||= @args[0]
end

#migrations_pathObject



38
39
40
# File 'lib/roda/project/bin/generators/migration.rb', line 38

def migrations_path
  "db/migrations"
end