thoughtbot/paperclip

View on GitHub

Showing 1,009 of 1,009 total issues

Line is too long. [107/80]
Open

      scale = [new_geometry.width.to_f / self.width.to_f , new_geometry.height.to_f / self.height.to_f].min
Severity: Minor
Found in lib/paperclip/geometry.rb by rubocop

Prefer annotated tokens (like %<foo>s</foo>) over unannotated tokens (like %s).
Open

        "%dx%d+%d+%d" % [ dst.width, dst.height, (self.width * scale - dst.width) / 2, 0 ]
Severity: Minor
Found in lib/paperclip/geometry.rb by rubocop

Use a consistent style for named format string tokens.

Note: unannotated style cop only works for strings which are passed as arguments to those methods: sprintf, format, %. The reason is that unannotated format is very similar to encoded URLs or Date/Time formatting strings.

Example: EnforcedStyle: annotated (default)

# bad
format('%{greeting}', greeting: 'Hello')
format('%s', 'Hello')

# good
format('%<greeting>s', greeting: 'Hello')</greeting>

Example: EnforcedStyle: template

# bad
format('%<greeting>s', greeting: 'Hello')
format('%s', 'Hello')

# good
format('%{greeting}', greeting: 'Hello')</greeting>

Example: EnforcedStyle: unannotated

# bad
format('%<greeting>s', greeting: 'Hello')
format('%{greeting}', 'Hello')

# good
format('%s', 'Hello')</greeting>

Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping.
Open

      when '!', '#'
Severity: Minor
Found in lib/paperclip/geometry.rb by rubocop

Checks if uses of quotes match the configured preference.

Example: EnforcedStyle: single_quotes (default)

# bad
"No special symbols"
"No string interpolation"
"Just text"

# good
'No special symbols'
'No string interpolation'
'Just text'
"Wait! What's #{this}!"

Example: EnforcedStyle: double_quotes

# bad
'Just some text'
'No special chars or interpolation'

# good
"Just some text"
"No special chars or interpolation"
"Every string in #{project} uses double_quotes"

Line is too long. [84/80]
Open

            message << "\n\n" if @allowed_types.present? && @rejected_types.present?

Prefer single-quoted strings inside interpolations.
Open

                message << "  #{@missing_allowed_types.join(", ")} were rejected."

This cop checks that quotes inside the string interpolation match the configured preference.

Example: EnforcedStyle: single_quotes (default)

# bad
result = "Tests #{success ? "PASS" : "FAIL"}"

# good
result = "Tests #{success ? 'PASS' : 'FAIL'}"

Example: EnforcedStyle: double_quotes

# bad
result = "Tests #{success ? 'PASS' : 'FAIL'}"

# good
result = "Tests #{success ? "PASS" : "FAIL"}"

Line is too long. [91/80]
Open

          @high.nil? || @high == Float::INFINITY || !passes_validation_with_size(@high + 1)

Align the parameters of a method call if they span more than one line.
Open

          :if => ->(instance){ instance.send(name).dirty? }
Severity: Minor
Found in lib/paperclip/has_attached_file.rb by rubocop

Here we check if the parameters on a multi-line method call or definition are aligned.

Example: EnforcedStyle: withfirstparameter (default)

# good

foo :bar,
    :baz

# bad

foo :bar,
  :baz

Example: EnforcedStyle: withfixedindentation

# good

foo :bar,
  :baz

# bad

foo :bar,
    :baz

Prefer double-quoted strings unless you need single quotes to avoid extra backslashes for escaping.
Open

require 'paperclip'
Severity: Minor
Found in lib/paperclip/railtie.rb by rubocop

Checks if uses of quotes match the configured preference.

Example: EnforcedStyle: single_quotes (default)

# bad
"No special symbols"
"No string interpolation"
"Just text"

# good
'No special symbols'
'No string interpolation'
'Just text'
"Wait! What's #{this}!"

Example: EnforcedStyle: double_quotes

# bad
'Just some text'
'No special chars or interpolation'

# good
"Just some text"
"No special chars or interpolation"
"Every string in #{project} uses double_quotes"

Line is too long. [83/80]
Open

        define_callbacks(*[callbacks, { terminator: hasta_la_vista_baby }].flatten)
Severity: Minor
Found in lib/paperclip/callbacks.rb by rubocop

Line is too long. [82/80]
Open

            write_options.merge!(:storage_class => storage_class) if storage_class
Severity: Minor
Found in lib/paperclip/storage/s3.rb by rubocop

Line is too long. [89/80]
Open

    # filesystem can be very easily served by Apache without requiring a hit to your app.
Severity: Minor
Found in lib/paperclip/storage/filesystem.rb by rubocop

Line is too long. [86/80]
Open

    # They also can be processed more easily after they've been saved, as they're just
Severity: Minor
Found in lib/paperclip/storage/filesystem.rb by rubocop

Line is too long. [88/80]
Open

    #   make a symlink to the capistrano-created system directory from inside your app's
Severity: Minor
Found in lib/paperclip/storage/filesystem.rb by rubocop

Line is too long. [93/80]
Open

    #   saved by paperclip. If you set this to an explicit octal value (0755, 0644, etc) then
Severity: Minor
Found in lib/paperclip/storage/filesystem.rb by rubocop

Use the new Ruby 1.9 hash syntax.
Open

            directory.files.new(:key => path(style)).public_url
Severity: Minor
Found in lib/paperclip/storage/fog.rb by rubocop

This cop checks hash literal syntax.

It can enforce either the use of the class hash rocket syntax or the use of the newer Ruby 1.9 syntax (when applicable).

A separate offense is registered for each problematic pair.

The supported styles are:

  • ruby19 - forces use of the 1.9 syntax (e.g. {a: 1}) when hashes have all symbols for keys
  • hash_rockets - forces use of hash rockets for all hashes
  • nomixedkeys - simply checks for hashes with mixed syntaxes
  • ruby19nomixed_keys - forces use of ruby 1.9 syntax and forbids mixed syntax hashes

Example: EnforcedStyle: ruby19 (default)

# bad
{:a => 2}
{b: 1, :c => 2}

# good
{a: 2, b: 1}
{:c => 2, 'd' => 2} # acceptable since 'd' isn't a symbol
{d: 1, 'e' => 2} # technically not forbidden

Example: EnforcedStyle: hash_rockets

# bad
{a: 1, b: 2}
{c: 1, 'd' => 5}

# good
{:a => 1, :b => 2}

Example: EnforcedStyle: nomixedkeys

# bad
{:a => 1, b: 2}
{c: 1, 'd' => 2}

# good
{:a => 1, :b => 2}
{c: 1, d: 2}

Example: EnforcedStyle: ruby19nomixed_keys

# bad
{:a => 1, :b => 2}
{c: 2, 'd' => 3} # should just use hash rockets

# good
{a: 1, b: 2}
{:c => 3, 'd' => 4}

Favor a normal unless-statement over a modifier clause in a multiline statement.
Open

          Paperclip.interpolates(:fog_public_url) do |attachment, style|
            attachment.public_url(style)
          end unless Paperclip::Interpolations.respond_to? :fog_public_url
Severity: Minor
Found in lib/paperclip/storage/fog.rb by rubocop

Checks for uses of if/unless modifiers with multiple-lines bodies.

Example:

# bad
{
  result: 'this should not happen'
} unless cond

# good
{ result: 'ok' } if cond

Redundant self detected.
Open

        ratio = Geometry.new( dst.width / self.width, dst.height / self.height )
Severity: Minor
Found in lib/paperclip/geometry.rb by rubocop

This cop checks for redundant uses of self.

The usage of self is only needed when:

  • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

  • Calling an attribute writer to prevent an local variable assignment.

Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

Note we allow uses of self with operators because it would be awkward otherwise.

Example:

# bad
def foo(bar)
  self.baz
end

# good
def foo(bar)
  self.bar  # Resolves name clash with the argument.
end

def foo
  bar = 1
  self.bar  # Resolves name clash with the local variable.
end

def foo
  %w[x y z].select do |bar|
    self.bar == bar  # Resolves name clash with argument of the block.
  end
end

Redundant self detected.
Open

        "%dx%d+%d+%d" % [ dst.width, dst.height, 0, (self.height * scale - dst.height) / 2 ]
Severity: Minor
Found in lib/paperclip/geometry.rb by rubocop

This cop checks for redundant uses of self.

The usage of self is only needed when:

  • Sending a message to same object with zero arguments in presence of a method name clash with an argument or a local variable.

  • Calling an attribute writer to prevent an local variable assignment.

Note, with using explicit self you can only send messages with public or protected scope, you cannot send private messages this way.

Note we allow uses of self with operators because it would be awkward otherwise.

Example:

# bad
def foo(bar)
  self.baz
end

# good
def foo(bar)
  self.bar  # Resolves name clash with the argument.
end

def foo
  bar = 1
  self.bar  # Resolves name clash with the local variable.
end

def foo
  %w[x y z].select do |bar|
    self.bar == bar  # Resolves name clash with argument of the block.
  end
end

Line is too long. [94/80]
Open

      class_for(klass).unscoped.where("#{name}_file_name IS NOT NULL").find_each do |instance|
Severity: Minor
Found in lib/paperclip/helpers.rb by rubocop

Line is too long. [83/80]
Open

                message << "  #{@missing_rejected_types.join(", ")} were accepted."
Severity
Category
Status
Source
Language