class RuboCop::Cop::Gemspec::DevelopmentDependencies
Enforce that development dependencies for a gem are specified in ‘Gemfile`, rather than in the `gemspec` using `add_development_dependency`. Alternatively, using `EnforcedStyle: gemspec`, enforce that all dependencies are specified in `gemspec`, rather than in `Gemfile`.
@example EnforcedStyle: Gemfile (default)
# Specify runtime dependencies in your gemspec, # but all other dependencies in your Gemfile. # bad # example.gemspec s.add_development_dependency "foo" # good # Gemfile gem "foo" # good # gems.rb gem "foo" # good (with AllowedGems: ["bar"]) # example.gemspec s.add_development_dependency "bar"
@example EnforcedStyle: gems.rb
# Specify runtime dependencies in your gemspec, # but all other dependencies in your Gemfile. # # Identical to `EnforcedStyle: Gemfile`, but with a different error message. # Rely on Bundler/GemFilename to enforce the use of `Gemfile` vs `gems.rb`. # bad # example.gemspec s.add_development_dependency "foo" # good # Gemfile gem "foo" # good # gems.rb gem "foo" # good (with AllowedGems: ["bar"]) # example.gemspec s.add_development_dependency "bar"
@example EnforcedStyle: gemspec
# Specify all dependencies in your gemspec. # bad # Gemfile gem "foo" # good # example.gemspec s.add_development_dependency "foo" # good (with AllowedGems: ["bar"]) # Gemfile gem "bar"
Constants
- MSG
- RESTRICT_ON_SEND
Public Instance Methods
on_send(node)
click to toggle source
# File lib/rubocop/cop/gemspec/development_dependencies.rb, line 86 def on_send(node) case style when :Gemfile, :'gems.rb' add_offense(node) if add_development_dependency?(node) when :gemspec add_offense(node) if gem?(node) end end
Private Instance Methods
forbidden_gem?(gem_name)
click to toggle source
# File lib/rubocop/cop/gemspec/development_dependencies.rb, line 97 def forbidden_gem?(gem_name) !cop_config['AllowedGems'].include?(gem_name) end
message(_range)
click to toggle source
# File lib/rubocop/cop/gemspec/development_dependencies.rb, line 101 def message(_range) format(MSG, preferred: style) end