From 76492ff0729ae10976bf187ddc3671d7f76964c2 Mon Sep 17 00:00:00 2001 From: Prommah Date: Thu, 24 Sep 2015 15:04:45 +0100 Subject: [PATCH 1/3] Add hound & ruby style config --- .hound.yml | 2 + config/styles/ruby.yml | 1065 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1067 insertions(+) create mode 100644 .hound.yml create mode 100755 config/styles/ruby.yml diff --git a/.hound.yml b/.hound.yml new file mode 100644 index 0000000..1460f06 --- /dev/null +++ b/.hound.yml @@ -0,0 +1,2 @@ +ruby: + config/styles/ruby.yml diff --git a/config/styles/ruby.yml b/config/styles/ruby.yml new file mode 100755 index 0000000..8183a0d --- /dev/null +++ b/config/styles/ruby.yml @@ -0,0 +1,1065 @@ +AllCops: + Include: + - "**/*.gemspec" + - "**/*.podspec" + - "**/*.jbuilder" + - "**/*.rake" + - "**/*.opal" + - "**/Gemfile" + - "**/Rakefile" + - "**/Capfile" + - "**/Guardfile" + - "**/Podfile" + - "**/Thorfile" + - "**/Vagrantfile" + - "**/Berksfile" + - "**/Cheffile" + - "**/Vagabondfile" + Exclude: + - "vendor/**/*" + - "db/schema.rb" + RunRailsCops: false + DisplayCopNames: false + StyleGuideCopsOnly: false +Style/AccessModifierIndentation: + Description: Check indentation of private/protected visibility modifiers. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#indent-public-private-protected + Enabled: true + EnforcedStyle: indent + SupportedStyles: + - outdent + - indent +Style/AlignHash: + Description: Align the elements of a hash literal if they span more than one line. + Enabled: true + EnforcedHashRocketStyle: key + EnforcedColonStyle: key + EnforcedLastArgumentHashStyle: always_inspect + SupportedLastArgumentHashStyles: + - always_inspect + - always_ignore + - ignore_implicit + - ignore_explicit +Style/AlignParameters: + Description: Align the parameters of a method call if they span more than one line. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-double-indent + Enabled: true + EnforcedStyle: with_first_parameter + SupportedStyles: + - with_first_parameter + - with_fixed_indentation +Style/AndOr: + Description: Use &&/|| instead of and/or. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-and-or-or + Enabled: true + EnforcedStyle: always + SupportedStyles: + - always + - conditionals +Style/BarePercentLiterals: + Description: Checks if usage of %() or %Q() matches configuration. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-q-shorthand + Enabled: true + EnforcedStyle: bare_percent + SupportedStyles: + - percent_q + - bare_percent +Style/BracesAroundHashParameters: + Description: Enforce braces style around hash parameters. + Enabled: true + EnforcedStyle: no_braces + SupportedStyles: + - braces + - no_braces + - context_dependent +Style/CaseIndentation: + Description: Indentation of when in a case/when/[else/]end. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#indent-when-to-case + Enabled: true + IndentWhenRelativeTo: case + SupportedStyles: + - case + - end + IndentOneStep: false +Style/ClassAndModuleChildren: + Description: Checks style of children classes and modules. + Enabled: false + EnforcedStyle: nested + SupportedStyles: + - nested + - compact +Style/ClassCheck: + Description: Enforces consistent use of `Object#is_a?` or `Object#kind_of?`. + Enabled: true + EnforcedStyle: is_a? + SupportedStyles: + - is_a? + - kind_of? +Style/CollectionMethods: + Description: Preferred collection methods. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#map-find-select-reduce-size + Enabled: true + PreferredMethods: + collect: map + collect!: map! + find: detect + find_all: select + reduce: inject +Style/CommentAnnotation: + Description: Checks formatting of special comments (TODO, FIXME, OPTIMIZE, HACK, + REVIEW). + StyleGuide: https://github.com/bbatsov/ruby-style-guide#annotate-keywords + Enabled: false + Keywords: + - TODO + - FIXME + - OPTIMIZE + - HACK + - REVIEW +Style/DotPosition: + Description: Checks the position of the dot in multi-line method calls. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#consistent-multi-line-chains + Enabled: true + EnforcedStyle: trailing + SupportedStyles: + - leading + - trailing +Style/EmptyLineBetweenDefs: + Description: Use empty lines between defs. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#empty-lines-between-methods + Enabled: true + AllowAdjacentOneLineDefs: false +Style/EmptyLinesAroundBlockBody: + Description: Keeps track of empty lines around block bodies. + Enabled: true + EnforcedStyle: no_empty_lines + SupportedStyles: + - empty_lines + - no_empty_lines +Style/EmptyLinesAroundClassBody: + Description: Keeps track of empty lines around class bodies. + Enabled: true + EnforcedStyle: no_empty_lines + SupportedStyles: + - empty_lines + - no_empty_lines +Style/EmptyLinesAroundModuleBody: + Description: Keeps track of empty lines around module bodies. + Enabled: true + EnforcedStyle: no_empty_lines + SupportedStyles: + - empty_lines + - no_empty_lines +Style/Encoding: + Description: Use UTF-8 as the source file encoding. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#utf-8 + Enabled: false + EnforcedStyle: always + SupportedStyles: + - when_needed + - always +Style/FileName: + Description: Use snake_case for source file names. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#snake-case-files + Enabled: false + Exclude: [] +Style/FirstParameterIndentation: + Description: Checks the indentation of the first parameter in a method call. + Enabled: true + EnforcedStyle: special_for_inner_method_call_in_parentheses + SupportedStyles: + - consistent + - special_for_inner_method_call + - special_for_inner_method_call_in_parentheses +Style/For: + Description: Checks use of for or each in multiline loops. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-for-loops + Enabled: true + EnforcedStyle: each + SupportedStyles: + - for + - each +Style/FormatString: + Description: Enforce the use of Kernel#sprintf, Kernel#format or String#%. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#sprintf + Enabled: false + EnforcedStyle: format + SupportedStyles: + - format + - sprintf + - percent +Style/GlobalVars: + Description: Do not introduce global variables. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#instance-vars + Enabled: false + AllowedVariables: [] +Style/GuardClause: + Description: Check for conditionals that can be replaced with guard clauses + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals + Enabled: false + MinBodyLength: 1 +Style/HashSyntax: + Description: 'Prefer Ruby 1.9 hash syntax { a: 1, b: 2 } over 1.8 syntax { :a => + 1, :b => 2 }.' + StyleGuide: https://github.com/bbatsov/ruby-style-guide#hash-literals + Enabled: true + EnforcedStyle: ruby19 + SupportedStyles: + - ruby19 + - hash_rockets +Style/IfUnlessModifier: + Description: Favor modifier if/unless usage when you have a single-line body. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#if-as-a-modifier + Enabled: false + MaxLineLength: 80 +Style/IndentationWidth: + Description: Use 2 spaces for indentation. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-indentation + Enabled: true + Width: 2 +Style/IndentHash: + Description: Checks the indentation of the first key in a hash literal. + Enabled: true + EnforcedStyle: special_inside_parentheses + SupportedStyles: + - special_inside_parentheses + - consistent +Style/LambdaCall: + Description: Use lambda.call(...) instead of lambda.(...). + StyleGuide: https://github.com/bbatsov/ruby-style-guide#proc-call + Enabled: false + EnforcedStyle: call + SupportedStyles: + - call + - braces +Style/Next: + Description: Use `next` to skip iteration instead of a condition at the end. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals + Enabled: false + EnforcedStyle: skip_modifier_ifs + MinBodyLength: 3 + SupportedStyles: + - skip_modifier_ifs + - always +Style/NonNilCheck: + Description: Checks for redundant nil checks. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-non-nil-checks + Enabled: true + IncludeSemanticChanges: false +Style/MethodDefParentheses: + Description: Checks if the method definitions have or don't have parentheses. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#method-parens + Enabled: true + EnforcedStyle: require_parentheses + SupportedStyles: + - require_parentheses + - require_no_parentheses +Style/MethodName: + Description: Use the configured style when naming methods. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#snake-case-symbols-methods-vars + Enabled: true + EnforcedStyle: snake_case + SupportedStyles: + - snake_case + - camelCase +Style/MultilineOperationIndentation: + Description: Checks indentation of binary operations that span more than one line. + Enabled: true + EnforcedStyle: aligned + SupportedStyles: + - aligned + - indented +Style/NumericLiterals: + Description: Add underscores to large numeric literals to improve their readability. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#underscores-in-numerics + Enabled: false + MinDigits: 5 +Style/ParenthesesAroundCondition: + Description: Don't use parentheses around the condition of an if/unless/while. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-parens-if + Enabled: true + AllowSafeAssignment: true +Style/PercentLiteralDelimiters: + Description: Use `%`-literal delimiters consistently + StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-literal-braces + Enabled: false + PreferredDelimiters: + "%": "()" + "%i": "()" + "%q": "()" + "%Q": "()" + "%r": "{}" + "%s": "()" + "%w": "()" + "%W": "()" + "%x": "()" +Style/PercentQLiterals: + Description: Checks if uses of %Q/%q match the configured preference. + Enabled: true + EnforcedStyle: lower_case_q + SupportedStyles: + - lower_case_q + - upper_case_q +Style/PredicateName: + Description: Check the names of predicate methods. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#bool-methods-qmark + Enabled: true + NamePrefix: + - is_ + - has_ + - have_ + NamePrefixBlacklist: + - is_ + Exclude: + - spec/**/* +Style/RaiseArgs: + Description: Checks the arguments passed to raise/fail. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#exception-class-messages + Enabled: false + EnforcedStyle: exploded + SupportedStyles: + - compact + - exploded +Style/RedundantReturn: + Description: Don't use return where it's not required. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-explicit-return + Enabled: true + AllowMultipleReturnValues: false +Style/RegexpLiteral: + Description: Use %r for regular expressions matching more than `MaxSlashes` '/' + characters. Use %r only for regular expressions matching more than `MaxSlashes` + '/' character. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-r + Enabled: false + MaxSlashes: 1 +Style/Semicolon: + Description: Don't use semicolons to terminate expressions. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-semicolon + Enabled: true + AllowAsExpressionSeparator: false +Style/SignalException: + Description: Checks for proper usage of fail and raise. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#fail-method + Enabled: false + EnforcedStyle: semantic + SupportedStyles: + - only_raise + - only_fail + - semantic +Style/SingleLineBlockParams: + Description: Enforces the names of some block params. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#reduce-blocks + Enabled: false + Methods: + - reduce: + - a + - e + - inject: + - a + - e +Style/SingleLineMethods: + Description: Avoid single-line methods. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-single-line-methods + Enabled: false + AllowIfMethodIsEmpty: true +Style/StringLiterals: + Description: Checks if uses of quotes match the configured preference. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#consistent-string-literals + Enabled: true + EnforcedStyle: double_quotes + SupportedStyles: + - single_quotes + - double_quotes +Style/StringLiteralsInInterpolation: + Description: Checks if uses of quotes inside expressions in interpolated strings + match the configured preference. + Enabled: true + EnforcedStyle: single_quotes + SupportedStyles: + - single_quotes + - double_quotes +Style/SpaceAroundBlockParameters: + Description: Checks the spacing inside and after block parameters pipes. + Enabled: true + EnforcedStyleInsidePipes: no_space + SupportedStyles: + - space + - no_space +Style/SpaceAroundEqualsInParameterDefault: + Description: Checks that the equals signs in parameter default assignments have + or don't have surrounding space depending on configuration. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-around-equals + Enabled: true + EnforcedStyle: space + SupportedStyles: + - space + - no_space +Style/SpaceBeforeBlockBraces: + Description: Checks that the left block brace has or doesn't have space before it. + Enabled: true + EnforcedStyle: space + SupportedStyles: + - space + - no_space +Style/SpaceInsideBlockBraces: + Description: Checks that block braces have or don't have surrounding space. For + blocks taking parameters, checks that the left brace has or doesn't have trailing + space. + Enabled: true + EnforcedStyle: space + SupportedStyles: + - space + - no_space + EnforcedStyleForEmptyBraces: no_space + SpaceBeforeBlockParameters: true +Style/SpaceInsideHashLiteralBraces: + Description: Use spaces inside hash literal braces - or don't. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-operators + Enabled: true + EnforcedStyle: space + EnforcedStyleForEmptyBraces: no_space + SupportedStyles: + - space + - no_space +Style/SymbolProc: + Description: Use symbols as procs instead of blocks when possible. + Enabled: true + IgnoredMethods: + - respond_to +Style/TrailingBlankLines: + Description: Checks trailing blank lines and final newline. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#newline-eof + Enabled: true + EnforcedStyle: final_newline + SupportedStyles: + - final_newline + - final_blank_line +Style/TrailingComma: + Description: Checks for trailing comma in parameter lists and literals. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-trailing-array-commas + Enabled: false + EnforcedStyleForMultiline: no_comma + SupportedStyles: + - comma + - no_comma +Style/TrivialAccessors: + Description: Prefer attr_* methods to trivial readers/writers. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#attr_family + Enabled: false + ExactNameMatch: false + AllowPredicates: false + AllowDSLWriters: false + Whitelist: + - to_ary + - to_a + - to_c + - to_enum + - to_h + - to_hash + - to_i + - to_int + - to_io + - to_open + - to_path + - to_proc + - to_r + - to_regexp + - to_str + - to_s + - to_sym +Style/VariableName: + Description: Use the configured style when naming variables. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#snake-case-symbols-methods-vars + Enabled: true + EnforcedStyle: snake_case + SupportedStyles: + - snake_case + - camelCase +Style/WhileUntilModifier: + Description: Favor modifier while/until usage when you have a single-line body. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#while-as-a-modifier + Enabled: false + MaxLineLength: 80 +Style/WordArray: + Description: Use %w or %W for arrays of words. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-w + Enabled: false + MinSize: 0 + WordRegex: !ruby/regexp /\A[\p{Word}]+\z/ +Metrics/AbcSize: + Description: A calculated magnitude based on number of assignments, branches, and + conditions. + Enabled: true + Max: 15 +Metrics/BlockNesting: + Description: Avoid excessive block nesting + StyleGuide: https://github.com/bbatsov/ruby-style-guide#three-is-the-number-thou-shalt-count + Enabled: false + Max: 3 +Metrics/ClassLength: + Description: Avoid classes longer than 100 lines of code. + Enabled: false + CountComments: false + Max: 100 +Metrics/CyclomaticComplexity: + Description: A complexity metric that is strongly correlated to the number of test + cases needed to validate a method. + Enabled: false + Max: 6 +Metrics/LineLength: + Description: Limit lines to 100 characters. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#80-character-limits + Enabled: true + Max: 100 + AllowURI: true + URISchemes: + - http + - https +Metrics/MethodLength: + Description: Avoid methods longer than 10 lines of code. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#short-methods + Enabled: false + CountComments: false + Max: 10 +Metrics/ParameterLists: + Description: Avoid parameter lists longer than three or four parameters. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#too-many-params + Enabled: false + Max: 5 + CountKeywordArgs: true +Metrics/PerceivedComplexity: + Description: A complexity metric geared towards measuring complexity for a human + reader. + Enabled: false + Max: 7 +Lint/AssignmentInCondition: + Description: Don't use assignment in conditions. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#safe-assignment-in-condition + Enabled: false + AllowSafeAssignment: true +Lint/EndAlignment: + Description: Align ends correctly. + Enabled: true + AlignWith: keyword + SupportedStyles: + - keyword + - variable +Lint/DefEndAlignment: + Description: Align ends corresponding to defs correctly. + Enabled: true + AlignWith: start_of_line + SupportedStyles: + - start_of_line + - def +Rails/ActionFilter: + Description: Enforces consistent use of action filter methods. + Enabled: false + EnforcedStyle: action + SupportedStyles: + - action + - filter + Include: + - app/controllers/**/*.rb +Rails/DefaultScope: + Description: Checks if the argument passed to default_scope is a block. + Enabled: true + Include: + - app/models/**/*.rb +Rails/HasAndBelongsToMany: + Description: Prefer has_many :through to has_and_belongs_to_many. + Enabled: true + Include: + - app/models/**/*.rb +Rails/Output: + Description: Checks for calls to puts, print, etc. + Enabled: true + Include: + - app/**/*.rb + - config/**/*.rb + - db/**/*.rb + - lib/**/*.rb +Rails/ReadWriteAttribute: + Description: Checks for read_attribute(:attr) and write_attribute(:attr, val). + Enabled: true + Include: + - app/models/**/*.rb +Rails/ScopeArgs: + Description: Checks the arguments of ActiveRecord scopes. + Enabled: true + Include: + - app/models/**/*.rb +Rails/Validation: + Description: Use validates :attribute, hash of validations. + Enabled: true + Include: + - app/models/**/*.rb +Style/InlineComment: + Description: Avoid inline comments. + Enabled: false +Style/MethodCalledOnDoEndBlock: + Description: Avoid chaining a method call on a do...end block. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#single-line-blocks + Enabled: false +Style/SymbolArray: + Description: Use %i or %I for arrays of symbols. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-i + Enabled: false +Style/ExtraSpacing: + Description: Do not use unnecessary spacing. + Enabled: true +Style/AccessorMethodName: + Description: Check the naming of accessor methods for get_/set_. + Enabled: false +Style/Alias: + Description: Use alias_method instead of alias. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#alias-method + Enabled: false +Style/AlignArray: + Description: Align the elements of an array literal if they span more than one line. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#align-multiline-arrays + Enabled: true +Style/ArrayJoin: + Description: Use Array#join instead of Array#*. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#array-join + Enabled: false +Style/AsciiComments: + Description: Use only ascii symbols in comments. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#english-comments + Enabled: false +Style/AsciiIdentifiers: + Description: Use only ascii symbols in identifiers. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#english-identifiers + Enabled: false +Style/Attr: + Description: Checks for uses of Module#attr. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#attr + Enabled: false +Style/BeginBlock: + Description: Avoid the use of BEGIN blocks. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-BEGIN-blocks + Enabled: true +Style/BlockComments: + Description: Do not use block comments. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-block-comments + Enabled: true +Style/BlockEndNewline: + Description: Put end statement of multiline block on its own line. + Enabled: true +Style/Blocks: + Description: Avoid using {...} for multi-line blocks (multiline chaining is always + ugly). Prefer {...} over do...end for single-line blocks. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#single-line-blocks + Enabled: true +Style/CaseEquality: + Description: Avoid explicit use of the case equality operator(===). + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-case-equality + Enabled: false +Style/CharacterLiteral: + Description: Checks for uses of character literals. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-character-literals + Enabled: false +Style/ClassAndModuleCamelCase: + Description: Use CamelCase for classes and modules. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#camelcase-classes + Enabled: true +Style/ClassMethods: + Description: Use self when defining module/class methods. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#def-self-singletons + Enabled: true +Style/ClassVars: + Description: Avoid the use of class variables. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-class-vars + Enabled: false +Style/ColonMethodCall: + Description: 'Do not use :: for method call.' + StyleGuide: https://github.com/bbatsov/ruby-style-guide#double-colons + Enabled: false +Style/CommentIndentation: + Description: Indentation of comments. + Enabled: true +Style/ConstantName: + Description: Constants should use SCREAMING_SNAKE_CASE. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#screaming-snake-case + Enabled: true +Style/DefWithParentheses: + Description: Use def with parentheses when there are arguments. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#method-parens + Enabled: true +Style/DeprecatedHashMethods: + Description: Checks for use of deprecated Hash methods. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#hash-key + Enabled: false +Style/Documentation: + Description: Document classes and non-namespace modules. + Enabled: false +Style/DoubleNegation: + Description: Checks for uses of double negation (!!). + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-bang-bang + Enabled: false +Style/EachWithObject: + Description: Prefer `each_with_object` over `inject` or `reduce`. + Enabled: false +Style/ElseAlignment: + Description: Align elses and elsifs correctly. + Enabled: true +Style/EmptyElse: + Description: Avoid empty else-clauses. + Enabled: true +Style/EmptyLines: + Description: Don't use several empty lines in a row. + Enabled: true +Style/EmptyLinesAroundAccessModifier: + Description: Keep blank lines around access modifiers. + Enabled: true +Style/EmptyLinesAroundMethodBody: + Description: Keeps track of empty lines around method bodies. + Enabled: true +Style/EmptyLiteral: + Description: Prefer literals to Array.new/Hash.new/String.new. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#literal-array-hash + Enabled: false +Style/EndBlock: + Description: Avoid the use of END blocks. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-END-blocks + Enabled: true +Style/EndOfLine: + Description: Use Unix-style line endings. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#crlf + Enabled: true +Style/EvenOdd: + Description: Favor the use of Fixnum#even? && Fixnum#odd? + StyleGuide: https://github.com/bbatsov/ruby-style-guide#predicate-methods + Enabled: false +Style/FlipFlop: + Description: Checks for flip flops + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-flip-flops + Enabled: false +Style/IfWithSemicolon: + Description: Do not use if x; .... Use the ternary operator instead. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-semicolon-ifs + Enabled: false +Style/IndentationConsistency: + Description: Keep indentation straight. + Enabled: true +Style/IndentArray: + Description: Checks the indentation of the first element in an array literal. + Enabled: true +Style/InfiniteLoop: + Description: Use Kernel#loop for infinite loops. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#infinite-loop + Enabled: true +Style/Lambda: + Description: Use the new lambda literal syntax for single-line blocks. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#lambda-multi-line + Enabled: false +Style/LeadingCommentSpace: + Description: Comments should start with a space. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#hash-space + Enabled: true +Style/LineEndConcatenation: + Description: Use \ instead of + or << to concatenate two string literals at line + end. + Enabled: false +Style/MethodCallParentheses: + Description: Do not use parentheses for method calls with no arguments. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-args-no-parens + Enabled: true +Style/ModuleFunction: + Description: Checks for usage of `extend self` in modules. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#module-function + Enabled: false +Style/MultilineBlockChain: + Description: Avoid multi-line chains of blocks. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#single-line-blocks + Enabled: true +Style/MultilineBlockLayout: + Description: Ensures newlines after multiline block do statements. + Enabled: true +Style/MultilineIfThen: + Description: Do not use then for multi-line if/unless. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-then + Enabled: true +Style/MultilineTernaryOperator: + Description: 'Avoid multi-line ?: (the ternary operator); use if/unless instead.' + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-multiline-ternary + Enabled: true +Style/NegatedIf: + Description: Favor unless over if for negative conditions (or control flow or). + StyleGuide: https://github.com/bbatsov/ruby-style-guide#unless-for-negatives + Enabled: false +Style/NegatedWhile: + Description: Favor until over while for negative conditions. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#until-for-negatives + Enabled: false +Style/NestedTernaryOperator: + Description: Use one expression per branch in a ternary operator. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-nested-ternary + Enabled: true +Style/NilComparison: + Description: Prefer x.nil? to x == nil. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#predicate-methods + Enabled: false +Style/Not: + Description: Use ! instead of not. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#bang-not-not + Enabled: false +Style/OneLineConditional: + Description: Favor the ternary operator(?:) over if/then/else/end constructs. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#ternary-operator + Enabled: false +Style/OpMethod: + Description: When defining binary operators, name the argument other. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#other-arg + Enabled: false +Style/PerlBackrefs: + Description: Avoid Perl-style regex back references. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-perl-regexp-last-matchers + Enabled: false +Style/Proc: + Description: Use proc instead of Proc.new. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#proc + Enabled: false +Style/RedundantBegin: + Description: Don't use begin blocks when they are not needed. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#begin-implicit + Enabled: true +Style/RedundantException: + Description: Checks for an obsolete RuntimeException argument in raise/fail. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-explicit-runtimeerror + Enabled: true +Style/RedundantSelf: + Description: Don't use self where it's not needed. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-self-unless-required + Enabled: true +Style/RescueModifier: + Description: Avoid using rescue in its modifier form. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-rescue-modifiers + Enabled: true +Style/SelfAssignment: + Description: Checks for places where self-assignment shorthand should have been + used. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#self-assignment + Enabled: false +Style/SingleSpaceBeforeFirstArg: + Description: Checks that exactly one space is used between a method name and the + first argument for method calls without parentheses. + Enabled: true +Style/SpaceAfterColon: + Description: Use spaces after colons. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-operators + Enabled: true +Style/SpaceAfterComma: + Description: Use spaces after commas. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-operators + Enabled: true +Style/SpaceAfterControlKeyword: + Description: Use spaces after if/elsif/unless/while/until/case/when. + Enabled: true +Style/SpaceAfterMethodName: + Description: Do not put a space between a method name and the opening parenthesis + in a method definition. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#parens-no-spaces + Enabled: true +Style/SpaceAfterNot: + Description: Tracks redundant space after the ! operator. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-space-bang + Enabled: true +Style/SpaceAfterSemicolon: + Description: Use spaces after semicolons. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-operators + Enabled: true +Style/SpaceBeforeComma: + Description: No spaces before commas. + Enabled: true +Style/SpaceBeforeComment: + Description: Checks for missing space between code and a comment on the same line. + Enabled: true +Style/SpaceBeforeSemicolon: + Description: No spaces before semicolons. + Enabled: true +Style/SpaceAroundOperators: + Description: Use spaces around operators. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-operators + Enabled: true +Style/SpaceBeforeModifierKeyword: + Description: Put a space before the modifier keyword. + Enabled: true +Style/SpaceInsideBrackets: + Description: No spaces after [ or before ]. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-spaces-braces + Enabled: true +Style/SpaceInsideParens: + Description: No spaces after ( or before ). + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-spaces-braces + Enabled: true +Style/SpaceInsideRangeLiteral: + Description: No spaces inside range literals. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-space-inside-range-literals + Enabled: true +Style/SpecialGlobalVars: + Description: Avoid Perl-style global variables. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-cryptic-perlisms + Enabled: false +Style/StructInheritance: + Description: Checks for inheritance from Struct.new. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-extend-struct-new + Enabled: true +Style/Tab: + Description: No hard tabs. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-indentation + Enabled: true +Style/TrailingWhitespace: + Description: Avoid trailing whitespace. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-trailing-whitespace + Enabled: true +Style/UnlessElse: + Description: Do not use unless with else. Rewrite these with the positive case first. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-else-with-unless + Enabled: true +Style/UnneededCapitalW: + Description: Checks for %W when interpolation is not needed. + Enabled: true +Style/UnneededPercentQ: + Description: Checks for %q/%Q when single quotes or double quotes would do. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-q + Enabled: true +Style/UnneededPercentX: + Description: Checks for %x when `` would do. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#percent-x + Enabled: true +Style/VariableInterpolation: + Description: Don't interpolate global, instance and class variables directly in + strings. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#curlies-interpolate + Enabled: false +Style/WhenThen: + Description: Use when x then ... for one-line cases. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#one-line-cases + Enabled: false +Style/WhileUntilDo: + Description: Checks for redundant do after while or until. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-multiline-while-do + Enabled: true +Lint/AmbiguousOperator: + Description: Checks for ambiguous operators in the first argument of a method invocation + without parentheses. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#parens-as-args + Enabled: false +Lint/AmbiguousRegexpLiteral: + Description: Checks for ambiguous regexp literals in the first argument of a method + invocation without parenthesis. + Enabled: false +Lint/BlockAlignment: + Description: Align block ends correctly. + Enabled: true +Lint/ConditionPosition: + Description: Checks for condition placed in a confusing position relative to the + keyword. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#same-line-condition + Enabled: false +Lint/Debugger: + Description: Check for debugger calls. + Enabled: true +Lint/DeprecatedClassMethods: + Description: Check for deprecated class method calls. + Enabled: false +Lint/DuplicateMethods: + Description: Check for duplicate methods calls. + Enabled: true +Lint/ElseLayout: + Description: Check for odd code arrangement in an else block. + Enabled: false +Lint/EmptyEnsure: + Description: Checks for empty ensure block. + Enabled: true +Lint/EmptyInterpolation: + Description: Checks for empty string interpolation. + Enabled: true +Lint/EndInMethod: + Description: END blocks should not be placed inside method definitions. + Enabled: true +Lint/EnsureReturn: + Description: Do not use return in an ensure block. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-return-ensure + Enabled: true +Lint/Eval: + Description: The use of eval represents a serious security risk. + Enabled: true +Lint/HandleExceptions: + Description: Don't suppress exception. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#dont-hide-exceptions + Enabled: false +Lint/InvalidCharacterLiteral: + Description: Checks for invalid character literals with a non-escaped whitespace + character. + Enabled: false +Lint/LiteralInCondition: + Description: Checks of literals used in conditions. + Enabled: false +Lint/LiteralInInterpolation: + Description: Checks for literals used in interpolation. + Enabled: false +Lint/Loop: + Description: Use Kernel#loop with break rather than begin/end/until or begin/end/while + for post-loop tests. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#loop-with-break + Enabled: false +Lint/ParenthesesAsGroupedExpression: + Description: Checks for method calls with a space before the opening parenthesis. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#parens-no-spaces + Enabled: false +Lint/RequireParentheses: + Description: Use parentheses in the method call to avoid confusion about precedence. + Enabled: false +Lint/RescueException: + Description: Avoid rescuing the Exception class. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-blind-rescues + Enabled: true +Lint/ShadowingOuterLocalVariable: + Description: Do not use the same name as outer local variable for block arguments + or block local variables. + Enabled: true +Lint/SpaceBeforeFirstArg: + Description: Put a space between a method name and the first argument in a method + call without parentheses. + Enabled: true +Lint/StringConversionInInterpolation: + Description: Checks for Object#to_s usage in string interpolation. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-to-s + Enabled: true +Lint/UnderscorePrefixedVariableName: + Description: Do not use prefix `_` for a variable that is used. + Enabled: false +Lint/UnusedBlockArgument: + Description: Checks for unused block arguments. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#underscore-unused-vars + Enabled: true +Lint/UnusedMethodArgument: + Description: Checks for unused method arguments. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#underscore-unused-vars + Enabled: true +Lint/UnreachableCode: + Description: Unreachable code. + Enabled: true +Lint/UselessAccessModifier: + Description: Checks for useless access modifiers. + Enabled: true +Lint/UselessAssignment: + Description: Checks for useless assignment to a local variable. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#underscore-unused-vars + Enabled: true +Lint/UselessComparison: + Description: Checks for comparison of something with itself. + Enabled: true +Lint/UselessElseWithoutRescue: + Description: Checks for useless `else` in `begin..end` without `rescue`. + Enabled: true +Lint/UselessSetterCall: + Description: Checks for useless setter call to a local variable. + Enabled: true +Lint/Void: + Description: Possible use of operator/literal/variable in void context. + Enabled: false +Rails/Delegate: + Description: Prefer delegate method for delegations. + Enabled: false From 95deb32e05a49d579909bddce8261e58983d50b5 Mon Sep 17 00:00:00 2001 From: Chris Blanchard Date: Tue, 20 Oct 2015 18:04:50 +0100 Subject: [PATCH 2/3] Added moderator group --- app/models/group.rb | 1 + app/models/user.rb | 4 ++++ spec/factories/group.rb | 5 +++++ spec/models/user_spec.rb | 12 ++++++++++++ 4 files changed, 22 insertions(+) diff --git a/app/models/group.rb b/app/models/group.rb index 734ea38..367185d 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -21,6 +21,7 @@ class Group < ActiveRecord::Base CHAMPIONS = 7 PREDICTORS = 8 STAFF = 10 + GATHER_MODERATORS = 14 attr_protected :id, :updated_at, :created_at, :founder_id validates_length_of :name, :maximum => 20 diff --git a/app/models/user.rb b/app/models/user.rb index 13d0407..1d28615 100755 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -205,6 +205,10 @@ class User < ActiveRecord::Base groups.exists? :id => Group::CASTERS end + def gather_moderator? + groups.exists? id: Group::GATHER_MODERATORS + end + def verified? # created_at < DateTime.now.ago(VERIFICATION_TIME) true diff --git a/spec/factories/group.rb b/spec/factories/group.rb index bf72ae2..68cec21 100644 --- a/spec/factories/group.rb +++ b/spec/factories/group.rb @@ -19,4 +19,9 @@ FactoryGirl.define do name "Donors" id Group::DONORS end + + trait :gather_moderator do + name "Gather Moderator" + id Group::GATHER_MODERATORS + end end diff --git a/spec/models/user_spec.rb b/spec/models/user_spec.rb index 49f261c..0258344 100644 --- a/spec/models/user_spec.rb +++ b/spec/models/user_spec.rb @@ -48,4 +48,16 @@ describe User do expect(user.banned? Ban::TYPE_MUTE).to be_truthy end end + + describe "#gather_moderator?" do + let!(:group) { create :group, :gather_moderator } + + it "returns true if gather moderator" do + create :grouper, group: group, user: user + expect(user.gather_moderator?).to eq(true) + end + it "returns false if not gather moderator" do + expect(user.gather_moderator?).to eq(false) + end + end end From bfc79cddcb65a47a2e0c6f2522a0a44dacb94467 Mon Sep 17 00:00:00 2001 From: Chris Blanchard Date: Tue, 20 Oct 2015 18:11:46 +0100 Subject: [PATCH 3/3] Return moderator status with users api --- app/controllers/api/v1/users_controller.rb | 1 + spec/controllers/api/v1/users_controller_spec.rb | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/app/controllers/api/v1/users_controller.rb b/app/controllers/api/v1/users_controller.rb index accc35f..acbb10e 100755 --- a/app/controllers/api/v1/users_controller.rb +++ b/app/controllers/api/v1/users_controller.rb @@ -16,6 +16,7 @@ class Api::V1::UsersController < Api::V1::BaseController time_zone: @user.time_zone, avatar: @user.profile.avatar.url, admin: @user.admin?, + moderator: @user.gather_moderator?, steam: @user.steamid.nil? ? nil : { id: @user.steamid, url: @steam.nil? ? nil : @steam.base_url, diff --git a/spec/controllers/api/v1/users_controller_spec.rb b/spec/controllers/api/v1/users_controller_spec.rb index c2a7059..7bf091e 100755 --- a/spec/controllers/api/v1/users_controller_spec.rb +++ b/spec/controllers/api/v1/users_controller_spec.rb @@ -19,6 +19,7 @@ describe Api::V1::UsersController do expect(json["country"]).to eq(@user.country) expect(json["time_zone"]).to eq(@user.time_zone) expect(json["admin"]).to eq(@user.admin?) + expect(json["moderator"]).to eq(@user.gather_moderator?) expect(json).to have_key("steam") expect(json["steam"]).to have_key("id") expect(json["steam"]).to have_key("url") @@ -39,6 +40,13 @@ describe Api::V1::UsersController do expect(json["steam"]).to be_nil end + it "returns gather moderator status" do + group = create :group, :gather_moderator + create :grouper, user: @user, group: group + get :show, id: @user.id + expect(json["moderator"]).to eq(true) + end + it "returns 404 if user does not exist" do expect { get :show, id: -1