【发布时间】:2021-04-03 18:43:59
【问题描述】:
我有一个名为 KBuilder::Watch 的 gem,它使用了我也开发的一堆 GEM。
.gemspec中正常的依赖管理如下:
spec.add_dependency 'k_builder', '~> 0.0'
spec.add_dependency 'k_builder-dotnet', '~> 0.0'
spec.add_dependency 'k_builder-package_json', '~> 0.0'
spec.add_dependency 'k_builder-webpack5', '~> 0.0'
spec.add_dependency 'k_doc', '~> 0.0'
spec.add_dependency 'k_log', '~> 0.0'
spec.add_dependency 'k_util', '~> 0.0'
这些 GEM 之前已通过 RubyGems 和 bundle install 安装到 ASDF 环境中
我已经使用 GemFile 覆盖了它
gem 'k_builder' , path: '../k_builder'
gem 'k_builder-package_json' , path: '../k_builder-package_json'
gem 'k_builder-webpack5' , path: '../k_builder-webpack5'
gem 'k_doc' , path: '../k_doc'
gem 'k_log' , path: '../k_log'
gem 'k_util' , path: '../k_util'
我正在运行 k_builder-watch exe 使用
/Users/username/dev/kgems/k_builder-watch/exe/k_builder-watch
当我运行应用程序并检查通过 $LOADED_FEATURES 数组加载了哪些 ruby 文件时,内存中的所有外部依赖代码都来自已安装的 GEMS 路径而不是本地路径。
my_gems = %w(handlebars-helpers k_builder k_builder-dotnet k_builder-watch k_builder-package_json k_builder-webpack5 k_doc k_log k_util)
loaded_files = $LOADED_FEATURES.select { |gem| my_gems.any? { |my_gem| gem.include?(my_gem) } }.sort
puts loaded_files
我在解决方案方面取得了进展
我刚刚在k_builder-watch GEM 的单元测试中测试了相同的流程,$LOADED_FEATURES 数组中的所有文件现在都指向我的本地依赖项,由此我发现问题是环境问题。
RSpec.describe KBuilder::Watch::Watcher do
let(:watch_path) { '/Users/davidcruwys/dev/kgems/k_builder-watch/.builders' }
it {
watcher = KBuilder::Watch::Watcher.new(watch_path)
watcher.start
}
end
my_gems = %w(handlebars-helpers k_builder k_builder-dotnet k_builder-watch k_builder-package_json k_builder-webpack5 k_doc k_log k_util)
loaded_files = $LOADED_FEATURES.select { |gem| my_gems.any? { |my_gem| gem.include?(my_gem) } }.sort
puts loaded_files
【问题讨论】: