diff --git a/.ruby-style.yml b/.ruby-style.yml new file mode 100644 index 0000000..b61a3e2 --- /dev/null +++ b/.ruby-style.yml @@ -0,0 +1,1063 @@ +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_ +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: false + 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: false + 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: true + 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: true + Max: 6 +Metrics/LineLength: + Description: Limit lines to 80 characters. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#80-character-limits + Enabled: true + Max: 80 + 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: true + CountComments: false + Max: 25 +Metrics/ParameterLists: + Description: Avoid parameter lists longer than three or four parameters. + StyleGuide: https://github.com/bbatsov/ruby-style-guide#too-many-params + Enabled: true + Max: 5 + CountKeywordArgs: true +Metrics/PerceivedComplexity: + Description: A complexity metric geared towards measuring complexity for a human + reader. + Enabled: true + 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: true +Style/Documentation: + Description: Document classes and non-namespace modules. + Enabled: true +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 \ No newline at end of file diff --git a/Gemfile b/Gemfile index a773947..a46d1dd 100644 --- a/Gemfile +++ b/Gemfile @@ -3,12 +3,6 @@ ruby '2.2.1' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '4.2.1' -# Use SCSS for stylesheets -gem 'sass-rails', '~> 5.0' -# Use Uglifier as compressor for JavaScript assets -gem 'uglifier', '>= 1.3.0' - -gem 'haml' gem 'paperclip', :git => "https://github.com/thoughtbot/paperclip.git" gem 'aws-sdk', '< 2.0' @@ -25,35 +19,48 @@ gem 'sdoc', '~> 0.4.0', group: :doc gem "devise" # allows for user sessions in JSON APIs -gem 'simple_token_authentication', '~> 1.0' # see semver.org +gem 'simple_token_authentication', '~> 1.0' -# allows for hellza sexiness +# ASSETS +# Use SCSS for stylesheets +gem 'sass-rails', '~> 5.0' +# Use Uglifier as compressor for JavaScript assets +gem 'uglifier', '>= 1.3.0' # FIXME -- remove gem 'jquery-rails' +gem 'haml' +# TODO: Configure Bower +# gem 'bower-rails' -gem 'rack-cache' -# Use Unicorn as the app server -# gem 'unicorn' +# PRODUCTION AND PERF TOOLS: +# Page Caching +gem 'rack-cache' +# Use Puma as the app server +# TODO: Test before enabling! (See Heroku docs) +# gem 'puma' # Use Capistrano for deployment # gem 'capistrano-rails', group: :development -group :development, :test do - # Cucumber, testing and coverage +group :test do + # Cucumber and rspec tools gem 'cucumber-rails', :require => false gem 'rspec-rails', '>= 3.1' - gem 'simplecov' gem "factory_girl_rails" gem 'faker' gem "shoulda-matchers" + + # CODE COVERAGE + gem 'simplecov' gem 'coveralls', require: false + gem "codeclimate-test-reporter", require: nil + gem "database_cleaner" end # Development Only Gems. Speed up loading in Travis. group :development do - # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug' # Use sqlite3 as the database for Active Record @@ -63,12 +70,31 @@ group :development do gem 'spring' # Access an IRB console on exception pages or by using <%= console %> in views - gem 'web-console', '~> 2.0' + # gem 'web-console', '~> 2.0' + # Custtom Error Pages in Dev Only + gem "better_errors" + gem "binding_of_caller" + + # Disable logging Assets in the Server log + gem 'quiet_assets' + + # Code Linting + gem 'rubocop', require: false + + # Better Debugging From Rails Console (See Readme) + gem 'awesome_print' + + # Code Quality Locally + gem 'metric_fu' + # Security Analysis gem 'brakeman' # DB Query Analysis / Optimizations gem "bullet" +end +group :staging do + # Heh, we need a real staging enviornment... end group :production do diff --git a/Gemfile.lock b/Gemfile.lock index d52e1be..9ee2fff 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,6 +1,6 @@ GIT remote: https://github.com/thoughtbot/paperclip.git - revision: cdbc05eb508ad18a1fff746d2c4fa58c177ee837 + revision: 55ce56026fe38ab88e59eb5709c6350e18dd33cd specs: paperclip (4.2.1) activemodel (>= 3.0.0) @@ -11,6 +11,7 @@ GIT GEM remote: https://rubygems.org/ specs: + abstract_type (0.0.7) actionmailer (4.2.1) actionpack (= 4.2.1) actionview (= 4.2.1) @@ -46,13 +47,26 @@ GEM minitest (~> 5.1) thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) + adamantium (0.2.0) + ice_nine (~> 0.11.0) + memoizable (~> 0.4.0) + addressable (2.3.8) arel (6.0.0) + arrayfields (4.9.2) + ast (2.0.0) + astrolabe (1.3.0) + parser (>= 2.2.0.pre.3, < 3.0) + awesome_print (1.6.1) aws-sdk (1.64.0) aws-sdk-v1 (= 1.64.0) aws-sdk-v1 (1.64.0) json (~> 1.4) nokogiri (>= 1.4.4) bcrypt (3.1.10) + better_errors (2.1.1) + coderay (>= 1.0.0) + erubis (>= 2.6.6) + rack (>= 0.9.0) binding_of_caller (0.7.2) debug_inspector (>= 0.0.1) brakeman (3.0.2) @@ -66,33 +80,54 @@ GEM sass (~> 3.0) terminal-table (~> 1.4) builder (3.2.2) - bullet (4.14.4) + bullet (4.14.5) activesupport (>= 3.0.0) - uniform_notifier (>= 1.6.0) + uniform_notifier (~> 1.9.0) byebug (4.0.5) columnize (= 0.9.0) + cane (2.6.2) + parallel capybara (2.4.4) mime-types (>= 1.16) nokogiri (>= 1.3.3) rack (>= 1.0.0) rack-test (>= 0.5.4) xpath (~> 2.0) + chronic (0.10.2) + churn (0.0.35) + chronic (>= 0.2.3) + hirb + json_pure + main + rest-client (>= 1.6.0) + ruby_parser (~> 3.0) + sexp_processor (~> 4.1) climate_control (0.0.3) activesupport (>= 3.0) cocaine (0.5.7) climate_control (>= 0.0.3, < 1.0) + code_analyzer (0.4.5) + sexp_processor + code_metrics (0.1.3) + codeclimate-test-reporter (0.4.7) + simplecov (>= 0.7.1, < 1.0.0) + coderay (1.1.0) coffee-rails (4.1.0) coffee-script (>= 2.2.0) railties (>= 4.0.0, < 5.0) - coffee-script (2.3.0) + coffee-script (2.4.1) coffee-script-source execjs - coffee-script-source (1.9.1) + coffee-script-source (1.9.1.1) + colored (1.2) columnize (0.9.0) - coveralls (0.8.0) - multi_json (~> 1.10) + concord (0.1.5) + adamantium (~> 0.2.0) + equalizer (~> 0.0.9) + coveralls (0.8.1) + json (~> 1.8) rest-client (>= 1.6.8, < 2) - simplecov (~> 0.9.1) + simplecov (~> 0.10.0) term-ansicolor (~> 1.3) thor (~> 0.19.1) cucumber (1.3.19) @@ -118,10 +153,11 @@ GEM warden (~> 1.2.3) diff-lcs (1.2.5) docile (1.1.5) - domain_name (0.5.23) + domain_name (0.5.24) unf (>= 0.0.5, < 1.0.0) + equalizer (0.0.11) erubis (2.7.0) - execjs (2.4.0) + execjs (2.5.2) factory_girl (4.5.0) activesupport (>= 3.0.0) factory_girl_rails (4.5.0) @@ -130,36 +166,77 @@ GEM faker (1.4.3) i18n (~> 0.5) fastercsv (1.5.5) + fattr (2.2.2) + flay (2.6.1) + ruby_parser (~> 3.0) + sexp_processor (~> 4.0) + flog (4.3.2) + ruby_parser (~> 3.1, > 3.1.0) + sexp_processor (~> 4.4) gherkin (2.12.2) multi_json (~> 1.3) - globalid (0.3.3) + globalid (0.3.5) activesupport (>= 4.1.0) haml (4.0.6) tilt highline (1.6.21) - hike (1.2.3) + hirb (0.7.3) http-cookie (1.0.2) domain_name (~> 0.5) i18n (0.7.0) + ice_nine (0.11.1) jquery-rails (4.0.3) rails-dom-testing (~> 1.0) railties (>= 4.2.0) thor (>= 0.14, < 2.0) json (1.8.2) + json_pure (1.8.2) + launchy (2.4.3) + addressable (~> 2.3) loofah (2.0.1) nokogiri (>= 1.5.9) mail (2.6.3) mime-types (>= 1.16, < 3) - mime-types (2.4.3) + main (6.1.0) + arrayfields (>= 4.7.4) + chronic (>= 0.6.2) + fattr (>= 2.2.0) + map (>= 5.1.0) + map (6.5.5) + memoizable (0.4.2) + thread_safe (~> 0.3, >= 0.3.1) + metric_fu (4.11.4) + cane (~> 2.5, >= 2.5.2) + churn (~> 0.0.35) + code_metrics (~> 0.1) + coderay + flay (~> 2.1, >= 2.0.1) + flog (~> 4.1, >= 4.1.1) + launchy (~> 2.0) + metric_fu-Saikuro (~> 1.1, >= 1.1.3) + multi_json + rails_best_practices (~> 1.14, >= 1.14.3) + redcard + reek (~> 1.3, >= 1.3.4) + roodi (~> 3.1) + metric_fu-Saikuro (1.1.3) + mime-types (2.5) mini_portile (0.6.2) - minitest (5.5.1) + minitest (5.6.1) multi_json (1.11.0) multi_test (0.1.2) netrc (0.10.3) nokogiri (1.6.6.2) mini_portile (~> 0.6.0) orm_adapter (0.5.0) + parallel (1.4.1) + parser (2.2.0.4) + ast (>= 1.1, < 3.0) pg (0.18.1) + powerpack (0.1.0) + procto (0.0.2) + quiet_assets (1.1.0) + railties (>= 3.1, < 5.0) rack (1.6.0) rack-cache (1.2) rack (>= 0.4) @@ -187,6 +264,15 @@ GEM rails_12factor (0.0.3) rails_serve_static_assets rails_stdout_logging + rails_best_practices (1.15.7) + activesupport + code_analyzer (>= 0.4.3) + colored + erubis + i18n + json + require_all + ruby-progressbar rails_serve_static_assets (0.0.4) rails_stdout_logging (0.0.3) railties (4.2.1) @@ -194,14 +280,23 @@ GEM activesupport (= 4.2.1) rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) + rainbow (2.0.0) rake (10.4.2) rdoc (4.2.0) + redcard (1.1.0) + reek (1.6.6) + parser (~> 2.2.0.pre.7) + rainbow (>= 1.99, < 3.0) + unparser (~> 0.2.2) + require_all (1.3.2) responders (2.1.0) railties (>= 4.2.0, < 5) rest-client (1.8.0) http-cookie (>= 1.0.2, < 2.0) mime-types (>= 1.16, < 3.0) netrc (~> 0.7) + roodi (3.3.1) + ruby_parser (~> 3.2, >= 3.2.2) rspec-core (3.2.3) rspec-support (~> 3.2.0) rspec-expectations (3.2.1) @@ -219,10 +314,17 @@ GEM rspec-mocks (~> 3.2.0) rspec-support (~> 3.2.0) rspec-support (3.2.2) - ruby2ruby (2.1.3) + rubocop (0.30.0) + astrolabe (~> 1.3) + parser (>= 2.2.0.1, < 3.0) + powerpack (~> 0.1) + rainbow (>= 1.99.1, < 3.0) + ruby-progressbar (~> 1.4) + ruby-progressbar (1.7.5) + ruby2ruby (2.1.4) ruby_parser (~> 3.1) sexp_processor (~> 4.0) - ruby_parser (3.6.5) + ruby_parser (3.6.6) sexp_processor (~> 4.1) sass (3.4.13) sass-rails (5.0.3) @@ -234,24 +336,21 @@ GEM sdoc (0.4.1) json (~> 1.7, >= 1.7.7) rdoc (~> 4.0) - sexp_processor (4.5.0) + sexp_processor (4.5.1) shoulda-matchers (2.8.0) activesupport (>= 3.0.0) - simple_token_authentication (1.8.0) + simple_token_authentication (1.9.0) actionmailer (>= 3.2.6, < 5) actionpack (>= 3.2.6, < 5) devise (~> 3.2) - simplecov (0.9.2) + simplecov (0.10.0) docile (~> 1.1.0) - multi_json (~> 1.0) - simplecov-html (~> 0.9.0) - simplecov-html (0.9.0) - spring (1.3.3) - sprockets (2.12.3) - hike (~> 1.2) - multi_json (~> 1.0) + json (~> 1.8) + simplecov-html (~> 0.10.0) + simplecov-html (0.10.0) + spring (1.3.4) + sprockets (3.0.3) rack (~> 1.0) - tilt (~> 1.1, != 1.3.0) sprockets-rails (2.2.4) actionpack (>= 3.0) activesupport (>= 3.0) @@ -263,7 +362,7 @@ GEM thor (0.19.1) thread_safe (0.3.5) tilt (1.4.1) - tins (1.3.5) + tins (1.5.1) turbolinks (2.5.3) coffee-rails tzinfo (1.2.2) @@ -273,15 +372,18 @@ GEM json (>= 1.8.0) unf (0.1.4) unf_ext - unf_ext (0.0.6) - uniform_notifier (1.8.0) + unf_ext (0.0.7.1) + uniform_notifier (1.9.0) + unparser (0.2.2) + abstract_type (~> 0.0.7) + adamantium (~> 0.2.0) + concord (~> 0.1.5) + diff-lcs (~> 1.2.5) + equalizer (~> 0.0.9) + parser (~> 2.2.0.2) + procto (~> 0.0.2) warden (1.2.3) rack (>= 1.0) - web-console (2.1.2) - activemodel (>= 4.0) - binding_of_caller (>= 0.7.2) - railties (>= 4.0) - sprockets-rails (>= 2.0, < 4.0) xpath (2.0.0) nokogiri (~> 1.3) @@ -289,10 +391,14 @@ PLATFORMS ruby DEPENDENCIES + awesome_print aws-sdk (< 2.0) + better_errors + binding_of_caller brakeman bullet byebug + codeclimate-test-reporter coveralls cucumber-rails database_cleaner @@ -301,12 +407,15 @@ DEPENDENCIES faker haml jquery-rails + metric_fu paperclip! pg + quiet_assets rack-cache rails (= 4.2.1) rails_12factor rspec-rails (>= 3.1) + rubocop sass-rails (~> 5.0) sdoc (~> 0.4.0) shoulda-matchers @@ -316,4 +425,3 @@ DEPENDENCIES sqlite3 turbolinks uglifier (>= 1.3.0) - web-console (~> 2.0) diff --git a/README.md b/README.md index 9a208f5..f521406 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,38 @@ # [snap-cloud][hk-app] A CS169 Project to create a new cloud sharing system for [Snap!][sbe]. -* [![Code Climate](https://codeclimate.com/github/snap-cloud/snap-cloud/badges/gpa.svg)](https://codeclimate.com/github/snap-cloud/snap-cloud) +[![Code Climate](https://codeclimate.com/github/snap-cloud/snap-cloud/badges/gpa.svg)](https://codeclimate.com/github/snap-cloud/snap-cloud) [![Build Status](https://travis-ci.org/snap-cloud/snap-cloud.svg?branch=master)](https://travis-ci.org/snap-cloud/snap-cloud) [![Coverage Status](https://coveralls.io/repos/snap-cloud/snap-cloud/badge.svg?branch=master)](https://coveralls.io/r/snap-cloud/snap-cloud?branch=master) [![Test Coverage](https://codeclimate.com/github/snap-cloud/snap-cloud/badges/coverage.svg)](https://codeclimate.com/github/snap-cloud/snap-cloud) [![Inline docs](http://inch-ci.org/github/snap-cloud/snap-cloud.svg?branch=master)](http://inch-ci.org/github/snap-cloud/snap-cloud) [![Dependency Status](https://gemnasium.com/snap-cloud/snap-cloud.svg)](https://gemnasium.com/snap-cloud/snap-cloud) -* [![Build Status](https://travis-ci.org/snap-cloud/snap-cloud.svg?branch=master)](https://travis-ci.org/snap-cloud/snap-cloud) +For CS169: Please see the [wiki][wiki] for documentation about each iteration. -* [![Coverage Status](https://coveralls.io/repos/snap-cloud/snap-cloud/badge.svg?branch=master)](https://coveralls.io/r/snap-cloud/snap-cloud?branch=master) - -Please see the [wiki][wiki] for documentation about each iteration. +# What is Snap!? +This section is `TODO` +- Snap! GH Repo +- Snap! homepage +- scratch site ## Setting Up -This project uses Rails 4.2 and Ruby 2.2.0. +This (currently) project uses Rails 4.2.1 and Ruby 2.2.1, and aims to be always +up to date! -The Heroku destination for the app is `http://ucbsnap.herokuapp.com` +The Heroku destination for the app is `https://ucbsnap.herokuapp.com` 1. **CLONE WITH `-r`** `git clone -r git@github.com:snap-cloud/snap-cloud.git` 1. You should have `rvm` or similar installed. 2. `bundle install --without production` 3. `git remote add heroku git@heroku.com:ucbsnap.git` -[hk-app]: http://ucbsnap.herokuapp.com +[hk-app]: https://ucbsnap.herokuapp.com [sbe]: http://snap.berkeley.edu -[wiki]: https://github.com/snap-cloud/snap-cloud/wiki/Iteration-0-Deliverables \ No newline at end of file +[wiki]: https://github.com/snap-cloud/snap-cloud/wiki/Iteration-0-Deliverables + +## Development Notes + +* GitHub Flow [link needed...] + +* The awesome print gem +``` +$ rails console +> require 'awesome_print' +ap SomeObject +``` \ No newline at end of file diff --git a/Rakefile b/Rakefile index ba6b733..45e6a39 100644 --- a/Rakefile +++ b/Rakefile @@ -3,4 +3,9 @@ require File.expand_path('../config/application', __FILE__) +require 'metric_fu' +require 'rubocop/rake_task' + +RuboCop::RakeTask.new + Rails.application.load_tasks diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 45e0f25..7659da0 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -10,19 +10,26 @@ class ApplicationController < ActionController::Base before_action :configure_permitted_parameters, if: :devise_controller? - # Custom Error Methos + # Custom Error Methods + # These are app level errors that we can use to configure how to handle them + # They should be created when there is not an already applicable Rails error + # TODO: We need to determine for the best split up 401 and 404 errors. module SnapException class AccessDenied < StandardError; end end # Clean Error Handler Methods # Use these in place of handling errors individually. - def access_denied # Equivalent 401 - raise SnapException::AccessDenied.new('You don\'t have permission to view this.') + def access_denied(msg = nil) # Equivalent 401 + default = 'You don\'t have permission to view this.' + msg ||= default + raise SnapException::AccessDenied.new(msg) end - def item_not_found # Equivalent 404 - raise ActiveRecord::RecordNotFound.new('Not Found') + def item_not_found(msg = nil) # Equivalent 404 + default = "This item couldn't be found." + msg ||= default + raise ActiveRecord::RecordNotFound.new(msg) end rescue_from ActiveRecord::RecordNotFound, :with => :record_not_found @@ -39,6 +46,9 @@ def configure_permitted_parameters devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:username, :email, :password, :password_confirmation, :current_password) } end + # This method allows stubbing in rspec testing. + # FIXME -- name should be migrated to get_current_user + # TODO: can't we just stub current_user method? def getCurrentUser current_user end