0

我正在尝试将邮件从 postfix 传输到 rails 任务。当我只是管道到香草红宝石脚本时,我已经成功地完成了这项工作,但是当切换到 Rails 任务时,我在 Postfix 的 mail.log 中收到以下错误:

(命令死于状态 1:“/usr/local/bin/rake”。命令输出:/usr/lib/ruby/1.9.1/rubygems/dependency.rb: 247: to_specs': Could not find rake (>= 0) amongst [] (Gem::LoadError) from /usr/lib/ruby/1.9.1/rubygems/dependency.rb:256:inin to_spec' 来自 /usr/lib/ruby /1.9.1/rubygems.rb:1231:in gem' from /usr/local/bin/rake:22:in')

这是来自 master.cf 的管道

电子邮件任务 unix - nn - 2 个管道标志=Xhq 用户=appuser 目录=/home/myapp/application/argv=/usr/local/bin/rake RAILS_ENV=production myapp:process_email

运行命令which rake返回/usr/local/bin/rake,所以我已经验证我有正确的 rake 路径。

我已经尝试ENV['PATH']在 .rake 文件中进行设置,/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games并且我也尝试在 pipe 命令中 cd'ing 到 rails app 目录,但仍然会导致相同的错误。我已经完成了捆绑安装和更新等。

非常感谢任何帮助...谢谢!

更新 我尝试按照建议使用 bundle exec rake 等,但现在出现此错误:

命令以状态 127 终止:“/usr/local/bin/bundle”。命令输出:bundler:找不到命令:rake 使用 bundle install 安装缺少的 gem 可执行文件

我也尝试将 gem 'rake' 添加到 Gemfile 中。我假设捆绑程序找不到 Gemfile?

更新(已修复) 因此最终起作用的命令如下:

电子邮件任务 unix - nn - 2 个管道标志=Xhq 用户=appuser 目录=/home/myapp/application/ argv=/usr/local/bin/bundle exec /usr/local/bin/rake RAILS_ENV=production mytask

这是我的错误组合。

  1. bundle 和 rake 需要使用完整路径
  2. rake 的任务参数中不需要应用程序名称,因为在执行之前选择了目录
  3. 附带问题:正在使用旧版本的 ruby​​,在执行后缀管道后导致不相关的 gem 错误

感谢大家的帮助。

4

1 回答 1

1

我认为你走错了路,不是系统找不到rake它是你的红宝石。与其将 rake 作为您的命令运行,不如尝试运行bundle所需的任何内容以使其基本上成为bundle exec rake...etc

更新

根据您的新信息,您的应用中似乎rake没有安装 gem。跑bundle show rake

假设它不存在,我想知道为什么。您是否使用打包的 gem 或其他东西发布您的应用程序?基本上,您没有bundle install在部署的应用程序中运行吗?

于 2013-11-08T00:25:14.580 回答