Merge pull request #158 from szajbus/master

Run rake through bundle exec
This commit is contained in:
Javan Makhmali 2011-07-19 06:20:18 -07:00
commit 648587b416
4 changed files with 39 additions and 7 deletions

View File

@ -19,4 +19,12 @@ module Whenever
Dir.pwd Dir.pwd
end end
end def self.rails3?
File.exists?(File.join(path, 'script', 'rails'))
end
def self.bundler?
File.exists?(File.join(path, 'Gemfile'))
end
end

View File

@ -8,10 +8,16 @@ set :path, Whenever.path
set :job_template, "/bin/bash -l -c ':job'" set :job_template, "/bin/bash -l -c ':job'"
job_type :command, ":task :output" job_type :command, ":task :output"
job_type :rake, "cd :path && RAILS_ENV=:environment rake :task --silent :output"
# Run rake through bundler if possible
if Whenever.bundler?
job_type :rake, "cd :path && RAILS_ENV=:environment bundle exec rake :task --silent :output"
else
job_type :rake, "cd :path && RAILS_ENV=:environment rake :task --silent :output"
end
# Create a runner job that's appropriate for the Rails version, # Create a runner job that's appropriate for the Rails version,
if File.exists?(File.join(path, 'script', 'rails')) if Whenever.rails3?
job_type :runner, "cd :path && script/rails runner -e :environment ':task' :output" job_type :runner, "cd :path && script/rails runner -e :environment ':task' :output"
else else
job_type :runner, "cd :path && script/runner -e :environment ':task' :output" job_type :runner, "cd :path && script/runner -e :environment ':task' :output"

View File

@ -114,7 +114,7 @@ class OutputAtTest < Test::Unit::TestCase
end end
should "output the rake task using one entry because the times are aligned" do should "output the rake task using one entry because the times are aligned" do
assert_match '2 5,15 * * 1,3,5 cd /your/path && RAILS_ENV=production rake blah:blah --silent', @output assert_match '2 5,15 * * 1,3,5 cd /your/path && RAILS_ENV=production bundle exec rake blah:blah --silent', @output
end end
end end
@ -177,7 +177,7 @@ class OutputAtTest < Test::Unit::TestCase
end end
should "output all of the commands @daily" do should "output all of the commands @daily" do
assert_match '@daily cd /your/path && RAILS_ENV=production rake blah:blah --silent', @output assert_match '@daily cd /your/path && RAILS_ENV=production bundle exec rake blah:blah --silent', @output
assert_match %(@daily cd /your/path && script/runner -e production 'runner_1'), @output assert_match %(@daily cd /your/path && script/runner -e production 'runner_1'), @output
assert_match '@daily command_1', @output assert_match '@daily command_1', @output
assert_match %(@daily cd /your/path && script/runner -e production 'runner_2'), @output assert_match %(@daily cd /your/path && script/runner -e production 'runner_2'), @output

View File

@ -110,7 +110,7 @@ class OutputDefaultDefinedJobsTest < Test::Unit::TestCase
context "A runner for a Rails 3 app" do context "A runner for a Rails 3 app" do
setup do setup do
Whenever.expects(:path).at_least_once.returns('/my/path') Whenever.expects(:path).at_least_once.returns('/my/path')
File.expects(:exists?).with('/my/path/script/rails').returns(true) Whenever.expects(:rails3?).returns(true)
@output = Whenever.cron \ @output = Whenever.cron \
<<-file <<-file
set :job_template, nil set :job_template, nil
@ -140,6 +140,24 @@ class OutputDefaultDefinedJobsTest < Test::Unit::TestCase
end end
should "output the rake command using that path" do should "output the rake command using that path" do
assert_match two_hours + ' cd /my/path && RAILS_ENV=production bundle exec rake blahblah --silent', @output
end
end
context "A rake for a non-bundler app" do
setup do
Whenever.expects(:path).at_least_once.returns('/my/path')
Whenever.expects(:bundler?).returns(false)
@output = Whenever.cron \
<<-file
set :job_template, nil
every 2.hours do
rake 'blahblah'
end
file
end
should "not use invoke through bundler" do
assert_match two_hours + ' cd /my/path && RAILS_ENV=production rake blahblah --silent', @output assert_match two_hours + ' cd /my/path && RAILS_ENV=production rake blahblah --silent', @output
end end
end end
@ -157,7 +175,7 @@ class OutputDefaultDefinedJobsTest < Test::Unit::TestCase
end end
should "output the rake command using that path" do should "output the rake command using that path" do
assert_match two_hours + ' cd /some/other/path && RAILS_ENV=production rake blahblah --silent', @output assert_match two_hours + ' cd /some/other/path && RAILS_ENV=production bundle exec rake blahblah --silent', @output
end end
end end