# File lib/chef/provider/deploy.rb, line 72
      def define_resource_requirements
        requirements.assert(:rollback) do |a|
          a.assertion { all_releases[-2] }
          a.failure_message(RuntimeError, "There is no release to rollback to!")
          #There is no reason to assume 2 deployments in a single chef run, hence fails in whyrun.
        end

        [ @new_resource.before_migrate, @new_resource.before_symlink, 
          @new_resource.before_restart, @new_resource.after_restart ].each do |script|
          requirements.assert(:deploy, :force_deploy) do |a|
            callback_file = "#{release_path}/#{script}"
            a.assertion do 
              if script && script.class == String
                ::File.exist?(callback_file)
              else
                true
              end
            end
            a.failure_message(RuntimeError, "Can't find your callback file #{callback_file}")
            a.whyrun("Would assume callback file #{callback_file} included in release")
          end
        end

      end