管道从Postfix到Ruby任务错误的电子邮件

时间:2013-11-08 00:18:02

标签: ruby-on-rails ruby email rake postfix-mta

我正在尝试将邮件从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:in gem' 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

这是我的错误组合。

  1. 需要使用完整路径进行捆绑和rake
  2. 由于在执行之前选择了目录,因此rake的任务参数中不需要
  3. 应用程序名称
  4. 一个副问题:正在使用旧版本的ruby,导致执行后缀管道后出现无关的gem错误
  5. 感谢每个人的帮助。

1 个答案:

答案 0 :(得分:1)

我认为你在错误的轨道上,不是系统找不到rake这是你的rubygems。不要将rake作为命令运行,而是尝试运行bundle传递您需要的任何内容,以使其基本上为bundle exec rake...etc

更新

根据您的新信息,您的应用中似乎未安装rake gem。运行bundle show rake

假设它不在那里,我想知道为什么。您是否使用打包的宝石或其他东西运送您的应用程序?基本上,您在已部署的应用中运行bundle install了吗?