Skip to content

Easy writing and executing bins(executable scripts) in Rails Application (especially for crontab or god). For my purposes much better than Rake, Thor and Rails Runner.

License

Notifications You must be signed in to change notification settings

kostya/bin_script

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rails BinScript

Gem for easy writing and executing scripts in Rails Application. For my purposes much better than Rake, Thor and Rails Runner.

Features:

  1. Each bin is a class
  2. Easy writing tests
  3. Custom lock file
  4. Custom logger with formatter for each script
  5. Can be daemonized

Tested on Rails 2.3 and 3.2

gem 'bin_script'
rails generate bin:bin bla

Call like:

$ cd project && ./bin/bla -e production --test -d "2012-04-07" -u "asdf"

Call examples:

$ ./bin/bla -h
$ ./bin/bla -e production
$ ./bin/bla -e production -L ./locks/bla.lock
$ ./bin/bla -e production -l ./log/bla.log
$ ./bin/bla -e production --daemonize --pidfile ./tmp/bla.pid

Example Bin

app/bins/bla_script.rb

class BlaScript < BinScript
  optional :u, "Update string"
  required :d, :description => "Date in format YYYY-MM-DD or YYYY-MM", :default => "2012-04-01"
  noarg    :t, :decription => "Test run", :alias => 'test'

  self.description = "Super Bla script"

  def test?
    params(:t)
  end

  def do!
    if test?
      logger.info "update string #{params(:u)}"
    else
      logger.info "data #{params(:d)}"
    end
  end
end

Options

class BlaScript < BinScript
  self.log_level = Logger::DEBUG
  self.enable_locking = false
  self.enable_logging = false
end

Custom exception notifier (create initializer with:)

class BinScript
  def notify_about_error(exception)
    Mailter.some_notification(exception)...
  end
end

About

Easy writing and executing bins(executable scripts) in Rails Application (especially for crontab or god). For my purposes much better than Rake, Thor and Rails Runner.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages