我有如下的Rake任务:
namespace :foreman do
task :dev do
`foreman start -f Procfile.dev`
end
end
desc "Run Foreman using Procfile.dev"
task :foreman => 'foreman:dev'
在shell中,forman命令能够正常工作,但是当我运行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
那么我应该如何运行这个任务呢?
:environment
,为什么它确切地要经过bundle呢? - Undistraction--binstubs
初始化了你的 repo,所以当你执行rake taskname
的时候,实际上是在使用bin/rake
,并且默认选择了你的GEMFILE
。不管怎样,我的解决方案有效吗? - Anshul Goyalbe
别名代替。我尝试运行rake
,be rake
和bin/rake
。所有的结果都导致了我上面描述的相同错误。我现在无法进行测试,但我会尽快尝试。 - Undistractionbe rake
运行,那么已经调用了bundler,这意味着项目的Gemfile会被引用。由于你提到使用bin/rake
,我认为可以安全地假设rake
也将引用bin/rake
。因此,在任何情况下,你的Gemfile都将被引用。由于系统调用会启动一个新的子进程,在子进程中导出变量/重置它们是安全的。 - Anshul Goyal