我有以下Rake任务:

namespace :foreman do
  task :dev do
    `foreman start -f Procfile.dev`
  end
end

desc "Run Foreman using Procfile.dev"
task :foreman => 'foreman:dev'

forman命令在shell上工作正常,但是当我运行rake foreman时,出现以下错误:
/Users/me/.gem/ruby/2.0.0/gems/bundler-1.5.2/lib/bundler/rubygems_integration.rb:240:in `block in replace_gem': foreman is not part of the bundle. Add it to Gemfile. (Gem::LoadError)
    from /Users/me/.gem/ruby/2.0.0/bin/foreman:22:in `<main>'

福尔曼特别指出:
Ruby users should take care not to install foreman in their project's Gemfile

那么如何使此任务运行?

最佳答案

如果必须通过rake使其工作,请尝试通过反引号更改shell-out,以使用指向系统范围的领类二进制文件的硬编码路径

`/global/path/to/foreman start -f Procfile.dev`

您只需要使用“哪个”或“定位”或类似的工具来确定在捆绑程序上下文之外起作用的路径。如果您使用的是rbenv,那么这可能就足够了:
$ rbenv which rake
/home/name/.rbenv/versions/1.9.3-p448/bin/rake

希望对您有所帮助。

10-08 10:49