Rails 3 -每当gem出错:/usr/bin/env: ruby: No such file or directo



当使用'每当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'

你可能早就过了这个问题,但为了将来的参考:

我有一个类似的问题,只是我得到

/usr/bin/env: ruby: No such file or directory

原来文件脚本rails的第一行是#!/usr/bin/env ruby1.9.1,它告诉系统用这里解释的ruby1.9.1调用它。但它应该是#!/usr/bin/env ruby1.9.3,因为这是我安装的版本。

希望这对将来的人有所帮助:)

我的问题是ruby在/usr/local/bin中,而不是在headless bash的路径中。所以我把rake任务列在schedule中。rb:

job_type :rake, "cd :path && PATH=/usr/local/bin:$PATH RAILS_ENV=:environment bundle exec rake :task :output"

我在生产中成功地使用了RVM和捆绑器。以下是我的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设置是因为我正在使用多阶段部署设置。如果需要,您可以忽略它或将其设置为与您的设置匹配的字符串。

这些信息可以在每当github页面的"Capistrano集成"one_answers"RVM集成"小节标题下找到。

我解决这个问题的方法和Duke差不多。除非我发现$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"

如果这些都不适合您,请尝试:

gem install rails

这是我的工作,希望它帮助!

相关内容