我正在尝试将邮件从postfix管道传输到rails任务。我只是在使用vanilla ruby脚本时成功地工作了,但是当切换到rails任务时,我在postfix的mail.log中收到以下错误:
(命令死于状态1:“/ usr / local / bin / rake”。命令输出:/usr/lib/ruby/1.9.1/rubygems/dependency.rb:247:in
to_specs': Could not find rake (>= 0) amongst [] (Gem::LoadError) from /usr/lib/ruby/1.9.1/rubygems/dependency.rb:256:in
to_spec 'from /usr/lib/ruby/1.9.1/rubygems.rb:1231:ingem' from /usr/local/bin/rake:22:in
')
这是master.cf
的管道线email-task unix - n n - 2 pipe flags = Xhq user = appuser directory = / home / myapp / application / argv = / usr / local / bin / rake RAILS_ENV = production myapp:process_email
运行命令which rake
会返回/usr/local/bin/rake
,所以我已经确认我有正确的佣金路径。
我已经尝试将.rake文件中的ENV['PATH']
设置为/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
,我也尝试在管道命令中使用cd'ing到rails app目录,但仍然会导致相同的错误。我已完成捆绑安装和更新等。
非常感谢任何帮助......谢谢!
更新 我按照建议尝试使用bundle exec rake等,但现在我收到了这个错误:
命令死于状态127:“/ usr / local / bin / bundle”。命令输出:bundler:找不到命令:rake使用bundle install安装缺少的gem可执行文件
我也试过在gemfile中添加gem'rake'。我假设bundler找不到Gemfile?
更新(已修复) 所以最终起作用的命令如下:
email-task unix - n n - 2 pipe flags = Xhq user = appuser directory = / home / myapp / application / argv = / usr / local / bin / bundle exec / usr / local / bin / rake RAILS_ENV = production mytask
这是我的错误组合。
感谢每个人的帮助。
答案 0 :(得分:1)
我认为你在错误的轨道上,不是系统找不到rake
这是你的rubygems。不要将rake作为命令运行,而是尝试运行bundle
传递您需要的任何内容,以使其基本上为bundle exec rake...etc
根据您的新信息,您的应用中似乎未安装rake
gem。运行bundle show rake
假设它不在那里,我想知道为什么。您是否使用打包的宝石或其他东西运送您的应用程序?基本上,您在已部署的应用中不运行bundle install
了吗?