NAME
bj
SYNOPSIS
bj (migration_code|generate_migration|migrate|setup|run|submit|list|
set|config|pid) [options]+
DESCRIPTION
________________________________
Overview
--------------------------------
Backgroundjob (Bj) is a simple to use background priority queue
for rails.
Although not yet tested on windows, the design of bj is such that
operation
should be possible on any operating system, including M$.
Jobs can be submitted to the queue directly using the api or from
the
commandline using the ''bj'' script. For example
code:
Bj.submit ''cat /etc/password''
cli:
bj submit cat /etc/password
When used from inside a rails application bj arranges that another
process
will always be running in the background to process the jobs that
you submit.
By using a separate process to run jobs bj does not impact the
resource
utilization of your rails application at all and enables several
very cool
features:
1) Bj allows you to sumbit jobs to any of your configured
databases and,
in each case, spawns a separate background process to run jobs
from that
queue
Bj.in :production do
Bj.submit ''production_job.exe''
end
Bj.in :development do
Bj.submit ''development_job.exe''
end
2) Although bj ensures that a process is always running to
process
your jobs, you can start a proces manually. This means that any
machine
capable of seeing your RAILS_ROOT can run jobs for your
application, allowing
one to setup a cluster of machines doing the work of a single
front end rails
applicaiton.
________________________________
Install
--------------------------------
Bj can be installed two ways: as a gem or as a plugin.
gem:
1) $sudo gem install bj
2) add "require ''bj''" to
config/environment.rb
3) bj setup
plugin:
1) ./script/plugin install
http://codeforpeople.rubyforge.org/svn/rails/plugins/bj
2) ./script/bj setup
________________________________
Api
--------------------------------
submit jobs for background processing. ''jobs'' can be a
string or
array of
strings. options are applied to each job in the ''jobs'',
and the
list of
submitted jobs is always returned. options (string or symbol) can
be
:rails_env => production|development|key_in_database_yml
when given this keyword causes bj to submit jobs
to the
specified database. default is RAILS_ENV.
:priority => any number, including negative ones. default is
zero.
:tag => a tag added to the job. simply makes searching easier.
:env => a hash specifying any additional environment vars the
background
process should have.
:stdin => any stdin the background process should have.
eg:
jobs = Bj.submit ''echo foobar'', :tag =>
''simple job''
jobs = Bj.submit ''/bin/cat'', :stdin => ''in
the hat'', :priority
=> 42
jobs = Bj.submit ''./script/runner ./scripts/a.rb'',
:rails_env =>
''production''
jobs = Bj.submit ''./script/runner /dev/stdin'',
:stdin => ''p RAILS_ENV'',
:tag => ''dynamic ruby code''
jobs Bj.submit array_of_commands, :priority => 451
when jobs are run, they are run in RAILS_ROOT. various attributes
are
available *only* once the job has finished. you can check whether
or not a
job is finished by using the #finished method, which simple does a
reload and
checks to see if the exit_status is non-nil.
eg:
jobs = Bj.submit list_of_jobs, :tag => ''important''
...
jobs.each do |job|
if job.finished?
p job.exit_status
p job.stdout
p job.stderr
end
end
See lib/bj/api.rb for more details.
________________________________
Sponsors
--------------------------------
http://www.engineyard.com/
http://quintess.com/
http://eparklabs.com/
PARAMETERS
--rails_root=rails_root, -R (0 ~> rails_root=/Users/ahoward/
rails_root)
the rails_root will be guessed unless you set this
--rails_env=rails_env, -E (0 ~> rails_env=development)
set the rails_env
--log=log, -l (0 ~> log=STDERR)
set the logfile
--help, -h
AUTHOR
ara.t.howard-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
URIS
http://codeforpeople.com/lib/ruby/
http://rubyforge.org/projects/codeforpeople/
http://codeforpeople.rubyforge.org/svn/rails/plugins/
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
On Wed, 12 Dec 2007, ara.t.howard wrote:> NAME > bjNot exactly the best name... :-) --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
ara.t.howard, I need to spawn uploading very large file uploads for a Rails app and this looks like it would work for my purposes. Could you confirm that? Thank you. Cody Skidmore -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Eno wrote:> On Wed, 12 Dec 2007, ara.t.howard wrote: > >> NAME >> bj > > > Not exactly the best name... :-)Hey, if it works though you feel good, relaxed, you lean back in our chair happy, with a stupid smile on your face just like. . .I think it''s a great name -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On Dec 13, 12:36 pm, Cody Skidmore <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> ara.t.howard, > > I need to spawn uploading very large file uploads for a Rails app and > this looks like it would work for my purposes. > > Could you confirm that? Thank you. > > Cody Skidmore > -- > Posted viahttp://www.ruby-forum.com/.. not really. spawn, backgrounddrb, and bj all serve very different purposes. for better or worse the rail conversation seems to be happening over here http://groups.google.com/group/ruby-talk-google/browse_frm/thread/144e9b3644ffe88e#38b99ec30098b956 join in! ;-) --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On 12/12/07, ara.t.howard <ara.t.howard-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > NAME > bjHey Ara, sorry to post a ticket like this... rubyforge has been down for me all day (local internet issues, no clue...) I had a few issues using the plugin I wanted to mention before I forgot. One is that freezing in the gems doesn''t really work because they try to load each other. The ''main'' gem has tries to load the ''attributes'' gem, even if its frozen inside the bj plugin. Not a big deal since I can just load the gems... The more important issue is that your definition of #instance_methods differs from the ruby core api (which includes an extra argument). This breaks gems like aws-s3. Here''s a patch (http://pastie.caboo.se/130739), but I''m not sure if it''ll break for users on older versions of ruby. At any rate, just thought I''d let you know. Thanks for the library though. It seems like it''ll work a lot better than my own job queue service... -- Rick Olson http://lighthouseapp.com http://weblog.techno-weenie.net http://mephistoblog.com --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On Dec 19, 4:44 pm, "Rick Olson" <technowee...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> On 12/12/07, ara.t.howard <ara.t.how...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > NAME > > bj > > Hey Ara, sorry to post a ticket like this... rubyforge has been down > for me all day (local internet issues, no clue...) I had a few issues > using the plugin I wanted to mention before I forgot.thanks for tip rick!> > One is that freezing in the gems doesn''t really work because they try > to load each other. The ''main'' gem has tries to load the ''attributes'' > gem, even if its frozen inside the bj plugin. Not a big deal since I > can just load the gems... >yeah this bums me out and i haven''t found a good work around. i''m playing with setting GEM_PATH now, but even that doesn''t really seem to work ;-(> The more important issue is that your definition of #instance_methods > differs from the ruby core api (which includes an extra argument). > This breaks gems like aws-s3. Here''s a patch > (http://pastie.caboo.se/130739), but I''m not sure if it''ll break for > users on older versions of ruby. At any rate, just thought I''d let > you know. >thanks - that, and bunch of other stuff, is fixed in the new version - due out today or tomorrow.> Thanks for the library though. It seems like it''ll work a lot better > than my own job queue service... >glad to hear you are liking it! -a --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---