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
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
class BlaScript < BinScript
self.log_level = Logger::DEBUG
self.enable_locking = false
self.enable_logging = false
end
class BinScript
def notify_about_error(exception)
Mailter.some_notification(exception)...
end
end