@@ -105,48 +105,55 @@ def boot!
105
105
106
106
def adjust_gem_path
107
107
gem_path = self . gem_path
108
- case gem_path?
109
- when false then # org.jruby.rack.RackLogger::DEBUG
110
- if gem_path && ! gem_path . empty? &&
111
- ( ! defined? ( Gem . path ) || ! Gem . path . include? ( gem_path ) )
112
- @rack_context . log ( "Gem.path won't be updated although seems configured: #{ gem_path } " )
113
- end
114
- return false
108
+ case set_gem_path = env_gem_path
115
109
when true then
116
- if env_gem_path = ENV [ 'GEM_PATH' ]
110
+ if env_path = ENV [ 'GEM_PATH' ]
117
111
if gem_path . nil? || gem_path . empty?
118
112
return # keep ENV['GEM_PATH'] as is
119
- elsif env_gem_path != gem_path
113
+ elsif env_path != gem_path
120
114
separator = File ::PATH_SEPARATOR
121
- unless env_gem_path . split ( separator ) . include? ( gem_path )
122
- ENV [ 'GEM_PATH' ] = "#{ gem_path } #{ separator } #{ env_gem_path } "
115
+ unless env_path . split ( separator ) . include? ( gem_path )
116
+ ENV [ 'GEM_PATH' ] = "#{ gem_path } #{ separator } #{ env_path } "
123
117
end
124
118
end
125
119
else
126
120
ENV [ 'GEM_PATH' ] = gem_path
127
121
end
128
- else # nil (default)
122
+ when false then
129
123
begin
130
124
require 'rubygems' unless defined? Gem . path
131
125
rescue LoadError
132
126
else
133
127
return if gem_path . nil? || gem_path . empty?
134
128
Gem . path . unshift ( gem_path ) unless Gem . path . include? ( gem_path )
135
129
end
130
+ return false
131
+ when nil then # org.jruby.rack.RackLogger::DEBUG
132
+ if gem_path && ! gem_path . empty? &&
133
+ ( ! defined? ( Gem . path ) || ! Gem . path . include? ( gem_path ) )
134
+ @rack_context . log ( "Gem.path won't be updated although seems configured: #{ gem_path } " )
135
+ end
136
+ return nil
137
+ else # 'jruby.rack.env.gem_path' "forced" to an explicit value
138
+ ENV [ 'GEM_PATH' ] = set_gem_path
136
139
end
137
140
end
138
141
139
142
# @return whether to update Gem.path and/or the environment GEM_PATH
140
- # - true/'env' forces ENV['GEM_PATH'] to be updated
141
- # - false disabled Gem.path mangling for good (leaves all as is)
143
+ # - true (default) forces ENV['GEM_PATH'] to be updated due compatibility
144
+ # Bundler 1.6 fails to revolve gems correctly when Gem.path is updated
145
+ # instead of the ENV['GEM_PATH'] environment variable
146
+ # - false disables ENV['GEM_PATH'] mangling for good (updates Gem.path)
147
+ #
142
148
# - if not specified Gem.path will be updated based on setting
143
- def gem_path?
144
- return @_gem_path if defined? @_gem_path
145
- gem_path = @rack_context . getInitParameter ( 'jruby.rack.gem_path' )
146
- return @_gem_path = nil if gem_path . nil?
147
- return @_gem_path = false if gem_path . empty? || gem_path == 'false'
148
- @_gem_path = true # true / 'env'
149
+ def env_gem_path
150
+ gem_path = @rack_context . getInitParameter ( 'jruby.rack.env.gem_path' )
151
+ return true if gem_path . nil? || gem_path . to_s == 'true'
152
+ return false if gem_path . to_s == 'false'
153
+ return nil if gem_path . empty? # set to an empty disables mangling
154
+ gem_path
149
155
end
156
+ private :env_gem_path
150
157
151
158
# @note called during {#boot!}
152
159
def export_global_settings
0 commit comments