我有一个Rake任务,它使用名为fontcustom
的gem的CLI。它已经很长时间没有收到更新,其依赖项与我的捆绑包中的其他Gems不兼容,因此我无法将其添加到Gemfile
。
我的系统上安装了正确的版本,但我无法看到如何让Rake任务使用系统版本。如果fontcustom
中没有Gemfile
,则运行引用它的rake任务会给我一个错误:
fontcustom不是捆绑包的一部分。将其添加到Gemfile。 (GEM :: LoadError)
我可以明确告诉rake任务使用fontcustom
的系统版本吗?
列出宝石:
$ gem list fontcustom
# fontcustom (1.3.3)
任务:
namespace :font do
desc "Compile custom icon font"
task :compile do
Dir.chdir('resources/graphics/fonts/custom') do
system 'fontcustom compile' # fontcustom is not part of the bundle.
# `fontcustom compile` # fontcustom is not part of the bundle.
# %x(fontcustom compile) # fontcustom compile: command not found
end
end
end
答案 0 :(得分:3)
你可以使用Bundler.with_clean_env
,它在重置各种Bundler特定的环境变量后执行一个块:
Bundler.with_clean_env { system 'fontcustom compile' }
或稍微简洁clean_system
(使用with_clean_env
):
Bundler.clean_system 'fontcustom compile'