class RuboCop::Cop::Gemspec::RubyVersionGlobalsUsage
end
spec.add_dependency ‘gem_a’
Gem::Specification.new do |spec|
# good
end
end
spec.add_dependency ‘gem_b’
else
spec.add_dependency ‘gem_a’
if RUBY_VERSION >= ‘3.0’
Gem::Specification.new do |spec|
# bad
@example
to execute ‘rake release` and not user’s ruby version.
It’s possible to have dependency based on ruby version used
constant is determined by ‘rake release`.
Using `RUBY_VERSION` is dangerous because value of the
Checks that `RUBY_VERSION` constant is not used in gemspec.
def gem_spec_with_ruby_version?(node)
def gem_spec_with_ruby_version?(node) gem_specification(processed_source.ast) && ruby_version?(node) end
def on_const(node)
def on_const(node) return unless gem_spec_with_ruby_version?(node) add_offense(node) end