|
|
|
|
|
by Umofomia
401 days ago
|
|
I will share a concrete example where I've recently run into this problem. In order to make use of OpenStruct, `require 'ostruct'` first needs to be declared. Our code neglected to make that declaration, and we saw failures when it was deployed. This code, however, passed all of our tests. We discovered it was because our testing framework included rspec-expectations, which has a dependency on diff-lcs[1], and diff-lcs itself declares `require 'ostruct'`[2]. Because of this, ostruct was loaded globally before our code was tested, which silently masked the underlying issue. This being said, I do understand the sentiment that this feature seems superfluous and may introduce unnecessary complication, especially from a Rubyist's point of view. The underlying mental model of Ruby dependency management is different from many other languages, and it's something to keep in mind when coming from other languages that do have scope for declared dependencies. [1] https://github.com/rspec/rspec-expectations/blob/v3.13.3/rsp...
[2] https://github.com/halostatue/diff-lcs/blob/v1.5.1/lib/diff/... |
|