I have a rails rake task which runs just fine. I want this task to be
run periodically by crontab so I added it to crontab as follows : 0,30,0
cd /var/www/html/myapp && RAILS_ENV=production
/usr/local/bin/rake myraketask --trace >>
/var/www/html/myapp/log/cron_log.log 2>&1
In cron_log.log I’m seeing the following error:
rake aborted!
invalid byte sequence in US-ASCII
/var/www/html/metajorn/config/boot.rb:98:in parse_gem_version' /var/www/html/metajorn/config/boot.rb:80:ingem_version’
/var/www/html/metajorn/config/boot.rb:59:in load_rails_gem' /var/www/html/metajorn/config/boot.rb:54:inload_initializer’
/var/www/html/metajorn/config/boot.rb:38:in run' /var/www/html/metajorn/config/boot.rb:11:inboot!’
/var/www/html/metajorn/config/boot.rb:110:in <top (required)>' /var/www/html/metajorn/Rakefile:4:inrequire’
/var/www/html/metajorn/Rakefile:4:in <top (required)>' /usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2383:inload’
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2383:in raw_load_rakefile' /usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2017:inblock in load_rakefile’
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2068:in standard_exception_handling' /usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2016:inload_rakefile’
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2000:in block in run' /usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2068:instandard_exception_handling’
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:1998:in run' /usr/local/bin/rake:31:in’
It is noteworthy that the task is working fine if I run it manually.
I have a rails rake task which runs just fine. I want this task to be
run periodically by crontab so I added it to crontab as follows : 0,30,0
cd /var/www/html/myapp && RAILS_ENV=production
/usr/local/bin/rake myraketask --trace >>
/var/www/html/myapp/log/cron_log.log 2>&1
If you type exactly that command (from the cd obviously) into a
terminal, does it work? Do you have permission to write into the log
directory? Though can’t see why that would give that error.
In cron_log.log I’m seeing the following error:
rake aborted!
invalid byte sequence in US-ASCII
/var/www/html/metajorn/config/boot.rb:98:in `parse_gem_version’
Are you sure this is as a result of the command above? It seems to be
in the wrong directory.
cd /var/www/html/metajorn && RAILS_ENV=production
/usr/local/bin/rake myraketask --trace >>
/var/www/html/metajorn/log/cron_log.log 2>&1
I changed the name to myapp just in the post … but omitted to change
it in the error trace.
So, yes when run manually it works just fine and file permissions are
set to 777.
I think it is related to some environment information that are not
loaded by cron … but I haven’t find yet what is exactly missing.
I have a rails rake task which runs just fine. I want this task to be
run periodically by crontab so I added it to crontab as follows : 0,30,0
cd /var/www/html/myapp && RAILS_ENV=production
/usr/local/bin/rake myraketask --trace >>
/var/www/html/myapp/log/cron_log.log 2>&1
If you type exactly that command (from the cd obviously) into a
terminal, does it work? Do you have permission to write into the log
directory? Though can’t see why that would give that error.
In cron_log.log I’m seeing the following error:
rake aborted!
invalid byte sequence in US-ASCII
/var/www/html/metajorn/config/boot.rb:98:in `parse_gem_version’
Are you sure this is as a result of the command above? It seems to be
in the wrong directory.
I finally solved the problem:
cron uses environment variables that may be different from the user
environment variables… it was the case for me.
my crond service uses us-ascii encoding while my rake task uses utf-8.
To fix the issue, I just had to change the encoding of crond by adding
the following lines to my crond file (in my centos5 it is locaed in:
/var/spool/cron/root )
I have a rails rake task which runs just fine. I want this task to be
run periodically by crontab so I added it to crontab as follows : 0,30,0
cd /var/www/html/myapp && RAILS_ENV=production
/usr/local/bin/rake myraketask --trace >>
/var/www/html/myapp/log/cron_log.log 2>&1
In cron_log.log I’m seeing the following error:
rake aborted!
invalid byte sequence in US-ASCII
/var/www/html/metajorn/config/boot.rb:98:in parse_gem_version' /var/www/html/metajorn/config/boot.rb:80:ingem_version’
/var/www/html/metajorn/config/boot.rb:59:in load_rails_gem' /var/www/html/metajorn/config/boot.rb:54:inload_initializer’
/var/www/html/metajorn/config/boot.rb:38:in run' /var/www/html/metajorn/config/boot.rb:11:inboot!’
/var/www/html/metajorn/config/boot.rb:110:in <top (required)>' /var/www/html/metajorn/Rakefile:4:inrequire’
/var/www/html/metajorn/Rakefile:4:in <top (required)>' /usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2383:inload’
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2383:in raw_load_rakefile' /usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2017:inblock in load_rakefile’
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2068:in standard_exception_handling' /usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2016:inload_rakefile’
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2000:in block in run' /usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2068:instandard_exception_handling’
/usr/local/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:1998:in run' /usr/local/bin/rake:31:in’
It is noteworthy that the task is working fine if I run it manually.
Thanks,
M
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.