Undo the actions performed by a generator. Rewind the action manifest and attempt to completely erase the results of each action.
Methods
Public Instance methods
[ show source ]
# File railties/lib/rails_generator/commands.rb, line 514
514: def complex_template(*args)
515: # nothing should be done here
516: end
Remove each directory in the given path from right to left. Remove each subdirectory if it exists and is a directory.
[ show source ]
# File railties/lib/rails_generator/commands.rb, line 478
478: def directory(relative_path)
479: parts = relative_path.split('/')
480: until parts.empty?
481: partial = File.join(parts)
482: path = destination_path(partial)
483: if File.exist?(path)
484: if Dir[File.join(path, '*')].empty?
485: logger.rmdir partial
486: unless options[:pretend]
487: if options[:svn]
488: # If the directory has been marked to be added
489: # but has not yet been checked in, revert and delete
490: if options[:svn][relative_path]
491: system("svn revert #{path}")
492: FileUtils.rmdir(path)
493: else
494: # If the directory is not in the status list, it
495: # has no modifications so we can simply remove it
496: system("svn rm #{path}")
497: end
498: # I don't think git needs to remove directories?..
499: # or maybe they have special consideration...
500: else
501: FileUtils.rmdir(path)
502: end
503: end
504: else
505: logger.notempty partial
506: end
507: else
508: logger.missing partial
509: end
510: parts.pop
511: end
512: end
This method is also aliased as
template
[ show source ]
# File railties/lib/rails_generator/commands.rb, line 433
433: def file(relative_source, relative_destination, file_options = {})
434: destination = destination_path(relative_destination)
435: if File.exist?(destination)
436: logger.rm relative_destination
437: unless options[:pretend]
438: if options[:svn]
439: # If the file has been marked to be added
440: # but has not yet been checked in, revert and delete
441: if options[:svn][relative_destination]
442: system("svn revert #{destination}")
443: FileUtils.rm(destination)
444: else
445: # If the directory is not in the status list, it
446: # has no modifications so we can simply remove it
447: system("svn rm #{destination}")
448: end
449: elsif options[:git]
450: if options[:git][:new][relative_destination]
451: # file has been added, but not committed
452: system("git reset HEAD #{relative_destination}")
453: FileUtils.rm(destination)
454: elsif options[:git][:modified][relative_destination]
455: # file is committed and modified
456: system("git rm -f #{relative_destination}")
457: else
458: # If the directory is not in the status list, it
459: # has no modifications so we can simply remove it
460: system("git rm #{relative_destination}")
461: end
462: else
463: FileUtils.rm(destination)
464: end
465: end
466: else
467: logger.missing relative_destination
468: return
469: end
470: end
When deleting a migration, it knows to delete every file named "[0-9]*_#{file_name}".
[ show source ]
# File railties/lib/rails_generator/commands.rb, line 519
519: def migration_template(relative_source, relative_destination, template_options = {})
520: migration_directory relative_destination
521:
522: migration_file_name = template_options[:migration_file_name] || file_name
523: unless migration_exists?(migration_file_name)
524: puts "There is no migration named #{migration_file_name}"
525: return
526: end
527:
528:
529: existing_migrations(migration_file_name).each do |file_path|
530: file(relative_source, file_path, template_options)
531: end
532: end
[ show source ]
# File railties/lib/rails_generator/commands.rb, line 534
534: def route_resources(*resources)
535: resource_list = resources.map { |r| r.to_sym.inspect }.join(', ')
536: look_for = "\n map.resources #{resource_list}\n"
537: logger.route "map.resources #{resource_list}"
538: gsub_file 'config/routes.rb', /(#{look_for})/mi, ''
539: end
Alias for file