Class Rails::Generator::Commands::Destroy
In: vendor/rails/railties/lib/rails_generator/commands.rb
Parent: RewindBase

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

[Source]

     # File vendor/rails/railties/lib/rails_generator/commands.rb, line 484
484:         def complex_template(*args)
485:           # nothing should be done here
486:         end

Remove each directory in the given path from right to left. Remove each subdirectory if it exists and is a directory.

[Source]

     # File vendor/rails/railties/lib/rails_generator/commands.rb, line 450
450:         def directory(relative_path)
451:           parts = relative_path.split('/')
452:           until parts.empty?
453:             partial = File.join(parts)
454:             path = destination_path(partial)
455:             if File.exist?(path)
456:               if Dir[File.join(path, '*')].empty?
457:                 logger.rmdir partial
458:                 unless options[:pretend]
459:                   if options[:svn]
460:                     # If the directory has been marked to be added
461:                     # but has not yet been checked in, revert and delete
462:                     if options[:svn][relative_path]
463:                       system("svn revert #{path}")
464:                       FileUtils.rmdir(path)
465:                     else
466:                     # If the directory is not in the status list, it
467:                     # has no modifications so we can simply remove it
468:                       system("svn rm #{path}")
469:                     end
470:                   else
471:                     FileUtils.rmdir(path)
472:                   end
473:                 end
474:               else
475:                 logger.notempty partial
476:               end
477:             else
478:               logger.missing partial
479:             end
480:             parts.pop
481:           end
482:         end

Remove a file if it exists and is a file.

[Source]

     # File vendor/rails/railties/lib/rails_generator/commands.rb, line 418
418:         def file(relative_source, relative_destination, file_options = {})
419:           destination = destination_path(relative_destination)
420:           if File.exist?(destination)
421:             logger.rm relative_destination
422:             unless options[:pretend]
423:               if options[:svn]
424:                 # If the file has been marked to be added
425:                 # but has not yet been checked in, revert and delete
426:                 if options[:svn][relative_destination]
427:                   system("svn revert #{destination}")
428:                   FileUtils.rm(destination)
429:                 else
430:                 # If the directory is not in the status list, it
431:                 # has no modifications so we can simply remove it
432:                   system("svn rm #{destination}")
433:                 end  
434:               else
435:                 FileUtils.rm(destination)
436:               end
437:             end
438:           else
439:             logger.missing relative_destination
440:             return
441:           end
442:         end

When deleting a migration, it knows to delete every file named "[0-9]*_#{file_name}".

[Source]

     # File vendor/rails/railties/lib/rails_generator/commands.rb, line 489
489:         def migration_template(relative_source, relative_destination, template_options = {})
490:           migration_directory relative_destination
491: 
492:           migration_file_name = template_options[:migration_file_name] || file_name
493:           unless migration_exists?(migration_file_name)
494:             puts "There is no migration named #{migration_file_name}"
495:             return
496:           end
497: 
498: 
499:           existing_migrations(migration_file_name).each do |file_path|
500:             file(relative_source, file_path, template_options)
501:           end
502:         end

[Source]

     # File vendor/rails/railties/lib/rails_generator/commands.rb, line 504
504:         def route_resources(*resources)
505:           resource_list = resources.map { |r| r.to_sym.inspect }.join(', ')
506:           look_for = "\n  map.resources #{resource_list}\n"
507:           logger.route "map.resources #{resource_list}"
508:           gsub_file 'config/routes.rb', /(#{look_for})/mi, ''
509:         end
template(relative_source, relative_destination, file_options = {})

Alias for file

[Validate]