I recently resolved an issue with Spree::Config and wanted to post my results to help the future googler.
Problem
Spree::Config values were not predictable. Sometimes they were fine and returning results as expected, but sometimes they had reverted to the default values.
Explanation
I was able to define a very simple use case that illustrated the problem. What I discovered was that running any test that invoked Spree::Config caused the values of Spree::Config preferences in my development environment to be reset to defaults. The development database was not changing, but the cached class was.
Even though caching was disabled in test.rb (config.cache_classes = false), Spree was still caching the configuration because it apparently disregards this setting. Spree::Config behavior is to loads values first from the cache if they are available (or at least this is my understanding) and so running tests updated the cached class and was polluting my development environment.
Resolution
One solution is to add Rails.cache.clear to my tests. This is not DRY.
The better solution was to configure a different cache store for test and development. In test.rb I added config.cache_store = :memory_store, restarted spork, and everything works.
:)