我正在尝试将邮件从 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:in
in to_spec' 来自 /usr/lib/ruby /1.9.1/rubygems.rb:1231:ingem' 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
这是我的错误组合。
- bundle 和 rake 需要使用完整路径
- rake 的任务参数中不需要应用程序名称,因为在执行之前选择了目录
- 附带问题:正在使用旧版本的 ruby,在执行后缀管道后导致不相关的 gem 错误
感谢大家的帮助。