### Home Classes Methods

### In Files

- lib/ramaze/reloader/watch_stat.rb

### Parent

Object

### Methods

- ::new
- #call
- #changed_files
- #close
- #remove_watch
- #safe_stat
- #watch
- #watching?

### Class/Module Index

Quicksearch

- Ramaze
- Ramaze::App
- Ramaze::AppGraph
- Ramaze::Bin
- Ramaze::Bin::Console
- Ramaze::Bin::Create
- Ramaze::Bin::Helper
- Ramaze::Bin::Restart
- Ramaze::Bin::Runner
- Ramaze::Bin::Start
- Ramaze::Bin::Status
- Ramaze::Bin::Stop
- Ramaze::Cache
- Ramaze::Cache::LRU
- Ramaze::Cache::LocalMemCache
- Ramaze::Cache::MemCache
- Ramaze::Cache::Redis
- Ramaze::Cache::Sequel
- Ramaze::Controller
- Ramaze::CoreExtensions
- Ramaze::CoreExtensions::Array
- Ramaze::CoreExtensions::Binding
- Ramaze::CoreExtensions::Kernel
- Ramaze::CoreExtensions::Numeric
- Ramaze::CoreExtensions::Object
- Ramaze::CoreExtensions::Proc
- Ramaze::CoreExtensions::String
- Ramaze::Current
- Ramaze::DefaultController
- Ramaze::Dictionary
- Ramaze::Fiber
- Ramaze::Files
- Ramaze::GemSetup
- Ramaze::Gestalt
- Ramaze::Helper
- Ramaze::Helper::Auth
- Ramaze::Helper::Bench
- Ramaze::Helper::BlueForm
- Ramaze::Helper::BlueForm::Form
- Ramaze::Helper::CSRF
- Ramaze::Helper::Cache
- Ramaze::Helper::Cache::SingletonMethods
- Ramaze::Helper::Disqus
- Ramaze::Helper::Email
- Ramaze::Helper::Erector
- Ramaze::Helper::Flash
- Ramaze::Helper::Formatting
- Ramaze::Helper::Gestalt
- Ramaze::Helper::Gravatar
- Ramaze::Helper::Identity
- Ramaze::Helper::Layout
- Ramaze::Helper::Layout::SingletonMethods
- Ramaze::Helper::Link
- Ramaze::Helper::Localize
- Ramaze::Helper::Localize::Dictionary
- Ramaze::Helper::Localize::Parser
- Ramaze::Helper::Markaby
- Ramaze::Helper::Maruku
- Ramaze::Helper::Paginate
- Ramaze::Helper::Paginate::Paginator
- Ramaze::Helper::Paginate::Paginator::ArrayPager
- Ramaze::Helper::Paginate::Paginator::DataMapperPager
- Ramaze::Helper::Remarkably
- Ramaze::Helper::RequestAccessor
- Ramaze::Helper::SendFile
- Ramaze::Helper::SimpleCaptcha
- Ramaze::Helper::Stack
- Ramaze::Helper::Thread
- Ramaze::Helper::Ultraviolet
- Ramaze::Helper::Upload
- Ramaze::Helper::Upload::ClassMethods
- Ramaze::Helper::Upload::UploadedFile
- Ramaze::Helper::UserHelper
- Ramaze::Helper::UserHelper::Wrapper
- Ramaze::Helper::XHTML
- Ramaze::LRUHash
- Ramaze::Logger
- Ramaze::Logger::Analogger
- Ramaze::Logger::Growl
- Ramaze::Logger::Informer
- Ramaze::Logger::Knotify
- Ramaze::Logger::LogHub
- Ramaze::Logger::Logger
- Ramaze::Logger::RotatingInformer
- Ramaze::Logger::Syslog
- Ramaze::Logger::Xosd
- Ramaze::Logging
- Ramaze::MiddlewareCompiler
- Ramaze::Plugin
- Ramaze::Reloader
- Ramaze::Reloader::Hooks
- Ramaze::Reloader::WatchInotify
- Ramaze::Reloader::WatchStat
- Ramaze::Request
- Ramaze::Response
- Ramaze::SpecLogger
- Ramaze::Struct
- Ramaze::View
- Ramaze::View::Erector
- Ramaze::View::Erubis
- Ramaze::View::Ezamar
- Ramaze::View::Gestalt
- Ramaze::View::Haml
- Ramaze::View::Liquid
- Ramaze::View::Liquid::Tag
- Ramaze::View::Lokar
- Ramaze::View::Mustache
- Ramaze::View::Mustache::RamazeContext
- Ramaze::View::Nagoro
- Ramaze::View::Remarkably
- Ramaze::View::Sass
- Ramaze::View::Slippers
- Ramaze::View::Tagz
- Ramaze::View::Tagz::Methods
- Ramaze::View::Tenjin
- Nagoro
- Nagoro::Pipe
- Nagoro::Pipe::RenderPartial
- Bacon
- Bacon::PrettyOutput
- Erector
- Erector::Widget
- Rack
- Rack::RouteExceptions
- Tenjin
- Tenjin::Template
- BlankSlate
- Controller
- Fiber
- FiberError
- MainController
- Object
- OrderedSet
- Thread

No matching classes.

# Ramaze::Reloader::WatchStat

### Public Class Methods

new() click to toggle source

    # File lib/ramaze/reloader/watch_stat.rb, line 4
    def initialize
      # @files[file_path] = stat
      @files = {}
      @last = Time.now
    end

### Public Instance Methods

call(cooldown) click to toggle source

    # File lib/ramaze/reloader/watch_stat.rb, line 10
    def call(cooldown)
      if cooldown and Time.now > @last + cooldown
        yield
        @last = Time.now
      end
    end

changed_files() click to toggle source

return files changed since last call

    # File lib/ramaze/reloader/watch_stat.rb, line 40
    def changed_files
      @files.each do |file, stat|
        if new_stat = safe_stat(file)
          if new_stat.mtime > stat.mtime
            @files[file] = new_stat
            yield(file)
          end
        end
      end
    end

close() click to toggle source

no need for cleanup

    # File lib/ramaze/reloader/watch_stat.rb, line 36
    def close
    end

remove_watch(file) click to toggle source

stop watching a file for changes

    # File lib/ramaze/reloader/watch_stat.rb, line 31
    def remove_watch(file)
      @files.delete(file)
    end

safe_stat(file) click to toggle source

    # File lib/ramaze/reloader/watch_stat.rb, line 51
    def safe_stat(file)
      File.stat(file)
    rescue Errno::ENOENT, Errno::ENOTDIR
      nil
    end

watch(file) click to toggle source

start watching a file for changes true if succeeded, false if failure

    # File lib/ramaze/reloader/watch_stat.rb, line 19
    def watch(file)
      return true if watching?(file) # if already watching
      if stat = safe_stat(file)
        @files[file] = stat
      end
    end

watching?(file) click to toggle source

    # File lib/ramaze/reloader/watch_stat.rb, line 26
    def watching?(file)
      @files.has_key?(file)
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.