Class Rails::Generator::Commands::Destroy
In: 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 railties/lib/rails_generator/commands.rb, line 473
        def complex_template(*args)
          # nothing should be done here
        end

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

[Source]

# File railties/lib/rails_generator/commands.rb, line 439
        def directory(relative_path)
          parts = relative_path.split('/')
          until parts.empty?
            partial = File.join(parts)
            path = destination_path(partial)
            if File.exists?(path)
              if Dir[File.join(path, '*')].empty?
                logger.rmdir partial
                unless options[:pretend]
                  if options[:svn]
                    # If the directory has been marked to be added
                    # but has not yet been checked in, revert and delete
                    if options[:svn][relative_path]
                      system("svn revert #{path}")
                      FileUtils.rmdir(path)
                    else
                    # If the directory is not in the status list, it
                    # has no modifications so we can simply remove it
                      system("svn rm #{path}")
                    end
                  else
                    FileUtils.rmdir(path)
                  end
                end
              else
                logger.notempty partial
              end
            else
              logger.missing partial
            end
            parts.pop
          end
        end

Remove a file if it exists and is a file.

[Source]

# File railties/lib/rails_generator/commands.rb, line 407
        def file(relative_source, relative_destination, file_options = {})
          destination = destination_path(relative_destination)
          if File.exists?(destination)
            logger.rm relative_destination
            unless options[:pretend]
              if options[:svn]
                # If the file has been marked to be added
                # but has not yet been checked in, revert and delete
                if options[:svn][relative_destination]
                  system("svn revert #{destination}")
                  FileUtils.rm(destination)
                else
                # If the directory is not in the status list, it
                # has no modifications so we can simply remove it
                  system("svn rm #{destination}")
                end  
              else
                FileUtils.rm(destination)
              end
            end
          else
            logger.missing relative_destination
            return
          end
        end

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

[Source]

# File railties/lib/rails_generator/commands.rb, line 478
        def migration_template(relative_source, relative_destination, template_options = {})
          migration_directory relative_destination

          migration_file_name = template_options[:migration_file_name] || file_name
          unless migration_exists?(migration_file_name)
            puts "There is no migration named #{migration_file_name}"
            return
          end


          existing_migrations(migration_file_name).each do |file_path|
            file(relative_source, file_path, template_options)
          end
        end

[Source]

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

Alias for file

[Validate]