In my own experience with this, the cache clearing needed is:
• if an ERB template has changed, that does not need a cache clear on its own (apparently ERB templates are uncached)
• if a puppet type (as in "types and providers") has changed, the jruby pool needs to be cleared
• for other changes, the environment cache needs to be cleared