当使用'when gem'时,我在日志中收到错误:
/usr/bin/env: ruby: No such file or directory
当我手动运行作业时,它可以正常工作。我用RVM安装了所有东西。
我使用which
命令查找我的Ruby安装位置,并得到:
kevin@lovely:/opt/personal$ which ruby
/home/kevin/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
我检查了我的$ PATH变量,它返回:
kevin@lovely:/opt/personal$ echo $PATH
/home/kevin/.rvm/gems/ruby-1.9.2-p290/bin:/home/kevin/.rvm/gems/ruby-1.9.2-p290@global/bin:/home/kevin/.rvm/rubies/ruby-1.9.2-p290/bin:/home/kevin/.rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
我相信这应该是正确的,但我可能错了,因为它不起作用。有人能指出我正确的方向吗?
如果您有兴趣,这就是我的每当crontab输出:
# Begin Whenever generated tasks for: rss
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /bin/bash -l -c 'cd /opt/personal && script/rails runner -e development '\''FeedEntry.update_from_feed("http://lovely/blog/feed/")'\'' >> /opt/personal/log/feedzirra.log 2>&1'
答案 0 :(得分:6)
您可能已经过了这个问题但是为了将来参考:
我遇到了类似的问题
/usr/bin/env: ruby: No such file or directory
事实证明,文件脚本\ rails的第一行是#!/usr/bin/env ruby1.9.1
,它告诉系统使用ruby1.9.1调用它,如here所述。但它应该是#!/usr/bin/env ruby1.9.3
,因为那是我安装的版本。
希望这可以帮助将来的某个人:)
答案 1 :(得分:4)
我的问题是ruby位于/ usr / local / bin中,而不是无头bash的路径。所以我只是在schedule.rb中创建了我的rake任务行:
job_type :rake, "cd :path && PATH=/usr/local/bin:$PATH RAILS_ENV=:environment bundle exec rake :task :output"
答案 2 :(得分:1)
我在生产中使用RVM和bundler时成功使用。以下是我的capistrano设置的相关部分,可以帮助您:
# rvm and bundler integration
require 'rvm/capistrano'
require 'bundler/capistrano'
# RVM environment
set :rvm_ruby_string, "ruby-1.9.2@mygemset"
# crontab
set :whenever_roles, :cron
set :whenever_command, "bundle exec whenever"
set :whenever_environment, defer { stage }
require 'whenever/capistrano'
:whenever_environment
设置是因为我使用的是多阶段部署设置。您可以忽略它,或者根据需要将其设置为与您的设置匹配的字符串。
大部分信息可以在自述文件中“Capistrano集成”和“RVM集成”部分标题下的whenever github page找到。
我希望有所帮助。
答案 3 :(得分:1)
如果这些都不适合您,请尝试:
gem install rails
这对我来说很有帮助,希望它有所帮助!
答案 4 :(得分:0)
我解决了和杜克一样的问题。除非我发现$ PATH变量对我不起作用。
sys_path = '/home/[user]/.rbenv/versions/[ruby_version]/bin'
job_type :runner, "cd :path && PATH=#{sys_path} bin/rails runner -e :environment ':task' :output"
job_type :rake, "cd :path && PATH=#{sys_path} :environment_variable=:environment bin/bundle exec rake :task --silent :output"