Rails BinScript
August 24, 2013 ยท View on GitHub
Gem for easy writing and executing scripts in Rails Application. For my purposes much better than Rake, Thor and Rails Runner.
Features:
- Each bin is a class
- Easy writing tests
- Custom lock file
- Custom logger with formatter for each script
- 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