diff --git a/.rubocop.yml b/.rubocop.yml new file mode 100644 index 0000000..34abf01 --- /dev/null +++ b/.rubocop.yml @@ -0,0 +1,18 @@ +--- +require: rubocop-rspec + +AllCops: + TargetRubyVersion: 2.3.7 + +Layout/ExtraSpacing: + AllowForAlignment: false + +Metrics/BlockLength: + Exclude: + - 'spec/**/*_spec.rb' + +Metrics/MethodLength: + Max: 15 + +RSpec/NestedGroups: + Max: 5 diff --git a/.travis.yml b/.travis.yml index d64e4ba..217d467 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,6 +12,7 @@ before_install: - gem --version script: + - bundle exec rubocop - bundle exec rspec notifications: diff --git a/Gemfile b/Gemfile index 851fabc..5f10ba8 100644 --- a/Gemfile +++ b/Gemfile @@ -1,2 +1,4 @@ +# frozen_string_literal: true + source 'https://rubygems.org' gemspec diff --git a/bankrupt.gemspec b/bankrupt.gemspec index 86d6e63..34ef912 100644 --- a/bankrupt.gemspec +++ b/bankrupt.gemspec @@ -1,26 +1,31 @@ -lib = File.expand_path("../lib", __FILE__) +# frozen_string_literal: true + +lib = File.expand_path('lib', __dir__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) -require "bankrupt/version" +require 'bankrupt/version' Gem::Specification.new do |spec| - spec.name = "bankrupt" - spec.version = Bankrupt::VERSION - spec.authors = ["Mario Finelli"] - spec.email = ["mario@finel.li"] + spec.name = 'bankrupt' + spec.version = Bankrupt::VERSION + spec.authors = ['Mario Finelli'] + spec.email = ['mario@finel.li'] - spec.summary = %q{A sinatra helper to load assets in development and production.} - spec.description = %q{This gem loads files from disk locally and from a CDN in production.} - spec.homepage = "https://github.com/mfinelli/bankrupt" - spec.license = "Apache-2.0" + spec.summary = 'A sinatra helper to load assets locally and production.' + spec.description = 'Load files from local disk or from a CDN in production.' + spec.homepage = 'https://github.com/mfinelli/bankrupt' + spec.license = 'Apache-2.0' + spec.required_ruby_version = '>= 2.3.0' - spec.files = `git ls-files -z`.split("\x0").reject do |f| + spec.files = `git ls-files -z`.split("\x0").reject do |f| f.match(%r{^(test|spec|features)/}) end - spec.require_paths = ["lib"] + spec.require_paths = ['lib'] spec.add_dependency 'slim', '~> 3.0' - spec.add_development_dependency "bundler", "~> 1.16" - spec.add_development_dependency "rspec", "~> 3.7" + spec.add_development_dependency 'bundler', '~> 1.16' + spec.add_development_dependency 'rspec', '~> 3.7' + spec.add_development_dependency 'rubocop' + spec.add_development_dependency 'rubocop-rspec' end diff --git a/lib/bankrupt.rb b/lib/bankrupt.rb index 552c2a8..a08bc4e 100644 --- a/lib/bankrupt.rb +++ b/lib/bankrupt.rb @@ -1,3 +1,7 @@ +# frozen_string_literal: true + +# Read assets from a local cache, using files on disk for development and +# from a CDN url if the CDN constant is set. module Bankrupt ASSET = Struct.new(:path, :sri).freeze diff --git a/lib/bankrupt/version.rb b/lib/bankrupt/version.rb index bf65fd8..1b76c25 100644 --- a/lib/bankrupt/version.rb +++ b/lib/bankrupt/version.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module Bankrupt VERSION = '0.1.0' end diff --git a/spec/bankrupt_spec.rb b/spec/bankrupt_spec.rb index 55be2ab..ef849dd 100644 --- a/spec/bankrupt_spec.rb +++ b/spec/bankrupt_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'slim' require_relative '../lib/bankrupt' diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 251aa51..5cac1f5 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,100 +1,20 @@ -# This file was generated by the `rspec --init` command. Conventionally, all -# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`. -# The generated `.rspec` file contains `--require spec_helper` which will cause -# this file to always be loaded, without a need to explicitly require it in any -# files. -# -# Given that it is always loaded, you are encouraged to keep this file as -# light-weight as possible. Requiring heavyweight dependencies from this file -# will add to the boot time of your test suite on EVERY test run, even for an -# individual file that may not need all of that loaded. Instead, consider making -# a separate helper file that requires the additional dependencies and performs -# the additional setup, and require it from the spec files that actually need -# it. -# -# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration +# frozen_string_literal: true + RSpec.configure do |config| - # rspec-expectations config goes here. You can use an alternate - # assertion/expectation library such as wrong or the stdlib/minitest - # assertions if you prefer. config.expect_with :rspec do |expectations| - # This option will default to `true` in RSpec 4. It makes the `description` - # and `failure_message` of custom matchers include text for helper methods - # defined using `chain`, e.g.: - # be_bigger_than(2).and_smaller_than(4).description - # # => "be bigger than 2 and smaller than 4" - # ...rather than: - # # => "be bigger than 2" expectations.include_chain_clauses_in_custom_matcher_descriptions = true end - # rspec-mocks config goes here. You can use an alternate test double - # library (such as bogus or mocha) by changing the `mock_with` option here. config.mock_with :rspec do |mocks| - # Prevents you from mocking or stubbing a method that does not exist on - # a real object. This is generally recommended, and will default to - # `true` in RSpec 4. mocks.verify_partial_doubles = true end - # This option will default to `:apply_to_host_groups` in RSpec 4 (and will - # have no way to turn it off -- the option exists only for backwards - # compatibility in RSpec 3). It causes shared context metadata to be - # inherited by the metadata hash of host groups and examples, rather than - # triggering implicit auto-inclusion in groups with matching metadata. config.shared_context_metadata_behavior = :apply_to_host_groups -# The settings below are suggested to provide a good initial experience -# with RSpec, but feel free to customize to your heart's content. -=begin - # This allows you to limit a spec run to individual examples or groups - # you care about by tagging them with `:focus` metadata. When nothing - # is tagged with `:focus`, all examples get run. RSpec also provides - # aliases for `it`, `describe`, and `context` that include `:focus` - # metadata: `fit`, `fdescribe` and `fcontext`, respectively. - config.filter_run_when_matching :focus - - # Allows RSpec to persist some state between runs in order to support - # the `--only-failures` and `--next-failure` CLI options. We recommend - # you configure your source control system to ignore this file. - config.example_status_persistence_file_path = "spec/examples.txt" - - # Limits the available syntax to the non-monkey patched syntax that is - # recommended. For more details, see: - # - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/ - # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/ - # - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode config.disable_monkey_patching! + config.default_formatter = 'doc' if config.files_to_run.one? - # This setting enables warnings. It's recommended, but in some cases may - # be too noisy due to issues in dependencies. - config.warnings = true - - # Many RSpec users commonly either run the entire suite or an individual - # file, and it's useful to allow more verbose output when running an - # individual spec file. - if config.files_to_run.one? - # Use the documentation formatter for detailed output, - # unless a formatter has already been configured - # (e.g. via a command-line flag). - config.default_formatter = "doc" - end - - # Print the 10 slowest examples and example groups at the - # end of the spec run, to help surface which specs are running - # particularly slow. config.profile_examples = 10 - - # Run specs in random order to surface order dependencies. If you find an - # order dependency and want to debug it, you can fix the order by providing - # the seed, which is printed after each run. - # --seed 1234 config.order = :random - - # Seed global randomization in this process using the `--seed` CLI option. - # Setting this allows you to use `--seed` to deterministically reproduce - # test failures related to randomization by passing the same `--seed` value - # as the one that triggered the failure. Kernel.srand config.seed -=end end