diff --git a/.travis.yml b/.travis.yml index 0dabfb60..15205d73 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,7 +26,7 @@ install: - bundle install - chromedriver-update - nvm install stable && nvm alias default stable - - npm install npm@latest -g + - npm install -g npm@5.3.x - npm install -g yarn - npm --version - yarn install diff --git a/Gemfile b/Gemfile index aa3643f3..8784c72b 100644 --- a/Gemfile +++ b/Gemfile @@ -29,7 +29,7 @@ gem "coffee-rails" # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder gem "jbuilder" -gem "redis" +gem "redis", "3.3.3" # bundle exec rake doc:rails generates the API under doc/api. gem "sdoc", group: :doc @@ -65,7 +65,7 @@ group :development, :test do ################################################################################ # Manage application processes - gem "factory_girl_rails" + gem "factory_bot_rails" gem "foreman" ################################################################################ @@ -92,16 +92,17 @@ group :development, :test do end group :test do - gem "capybara" + gem "capybara", "2.13.0" gem "capybara-screenshot" - gem "capybara-webkit" + gem "capybara-webkit", "1.14.0" gem "chromedriver-helper" gem "coveralls", require: false gem "database_cleaner" gem "generator_spec" gem "launchy" gem "poltergeist" - gem "rspec-rails", "~> 3.6" + gem "rails_best_practices" + gem "rspec-rails", "3.6.1" gem "rspec-retry" - gem "selenium-webdriver", "<3.0.0" + gem "selenium-webdriver" end diff --git a/Gemfile.lock b/Gemfile.lock index 2bece4f8..9a0ee04b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,161 +1,168 @@ GEM remote: https://rubygems.org/ specs: - actioncable (5.1.3) - actionpack (= 5.1.3) + actioncable (5.1.4) + actionpack (= 5.1.4) nio4r (~> 2.0) websocket-driver (~> 0.6.1) - actionmailer (5.1.3) - actionpack (= 5.1.3) - actionview (= 5.1.3) - activejob (= 5.1.3) + actionmailer (5.1.4) + actionpack (= 5.1.4) + actionview (= 5.1.4) + activejob (= 5.1.4) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (5.1.3) - actionview (= 5.1.3) - activesupport (= 5.1.3) + actionpack (5.1.4) + actionview (= 5.1.4) + activesupport (= 5.1.4) rack (~> 2.0) - rack-test (~> 0.6.3) + rack-test (>= 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.0.2) - actionview (5.1.3) - activesupport (= 5.1.3) + actionview (5.1.4) + activesupport (= 5.1.4) builder (~> 3.1) erubi (~> 1.4) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.0.3) - activejob (5.1.3) - activesupport (= 5.1.3) + activejob (5.1.4) + activesupport (= 5.1.4) globalid (>= 0.3.6) - activemodel (5.1.3) - activesupport (= 5.1.3) - activerecord (5.1.3) - activemodel (= 5.1.3) - activesupport (= 5.1.3) + activemodel (5.1.4) + activesupport (= 5.1.4) + activerecord (5.1.4) + activemodel (= 5.1.4) + activesupport (= 5.1.4) arel (~> 8.0) - activesupport (5.1.3) + activesupport (5.1.4) concurrent-ruby (~> 1.0, >= 1.0.2) i18n (~> 0.7) minitest (~> 5.1) tzinfo (~> 1.1) - addressable (2.5.1) - public_suffix (~> 2.0, >= 2.0.2) + addressable (2.5.2) + public_suffix (>= 2.0.2, < 4.0) archive-zip (0.7.0) io-like (~> 0.3.0) arel (8.0.0) ast (2.3.0) - autoprefixer-rails (6.7.7.1) + autoprefixer-rails (7.1.6) execjs - awesome_print (1.7.0) + awesome_print (1.8.0) bindex (0.5.0) - binding_of_caller (0.7.2) + binding_of_caller (0.7.3) debug_inspector (>= 0.0.1) brakeman (4.0.1) builder (3.2.3) - bundler-audit (0.5.0) + bundler-audit (0.6.0) bundler (~> 1.2) thor (~> 0.18) - byebug (9.0.6) - capybara (2.14.0) + byebug (9.1.0) + capybara (2.13.0) addressable mime-types (>= 1.16) nokogiri (>= 1.3.3) rack (>= 1.0.0) rack-test (>= 0.5.4) xpath (~> 2.0) - capybara-screenshot (1.0.14) + capybara-screenshot (1.0.18) capybara (>= 1.0, < 3) launchy - capybara-webkit (1.1.0) - capybara (~> 2.0, >= 2.0.2) + capybara-webkit (1.14.0) + capybara (>= 2.3.0, < 2.14.0) json - childprocess (0.6.3) + childprocess (0.8.0) ffi (~> 1.0, >= 1.0.11) chromedriver-helper (1.1.0) archive-zip (~> 0.7.0) nokogiri (~> 1.6) cliver (0.3.2) - coderay (1.1.1) - coffee-rails (4.2.1) + code_analyzer (0.4.8) + sexp_processor + coderay (1.1.2) + coffee-rails (4.2.2) coffee-script (>= 2.2.0) - railties (>= 4.0.0, < 5.2.x) + railties (>= 4.0.0) coffee-script (2.4.1) coffee-script-source execjs coffee-script-source (1.12.2) concurrent-ruby (1.0.5) connection_pool (2.2.1) - coveralls (0.8.20) + coveralls (0.8.21) json (>= 1.8, < 3) simplecov (~> 0.14.1) term-ansicolor (~> 1.3) thor (~> 0.19.4) tins (~> 1.6) - database_cleaner (1.5.3) - debug_inspector (0.0.2) + crass (1.0.3) + database_cleaner (1.6.2) + debug_inspector (0.0.3) diff-lcs (1.3) docile (1.1.5) - erubi (1.6.1) + erubi (1.7.0) + erubis (2.7.0) execjs (2.7.0) - factory_girl (4.8.0) + factory_bot (4.8.2) activesupport (>= 3.0.0) - factory_girl_rails (4.8.0) - factory_girl (~> 4.8.0) + factory_bot_rails (4.8.2) + factory_bot (~> 4.8.2) railties (>= 3.0.0) ffi (1.9.18) foreman (0.84.0) thor (~> 0.19.1) - generator_spec (0.9.3) + generator_spec (0.9.4) activesupport (>= 3.0.0) railties (>= 3.0.0) - globalid (0.4.0) + globalid (0.4.1) activesupport (>= 4.2.0) - i18n (0.8.6) + i18n (0.9.1) + concurrent-ruby (~> 1.0) interception (0.5) io-like (0.3.0) - jbuilder (2.6.3) - activesupport (>= 3.0.0, < 5.2) - multi_json (~> 1.2) + jbuilder (2.7.0) + activesupport (>= 4.2.0) + multi_json (>= 1.2) json (1.8.6) launchy (2.4.3) addressable (~> 2.3) - libv8 (5.3.332.38.5) + libv8 (5.9.211.38.1) listen (3.1.5) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) ruby_dep (~> 1.2) - loofah (2.0.3) + loofah (2.1.1) + crass (~> 1.0.2) nokogiri (>= 1.5.9) - mail (2.6.6) - mime-types (>= 1.16, < 4) - method_source (0.8.2) + mail (2.7.0) + mini_mime (>= 0.1.1) + method_source (0.9.0) mime-types (3.1) mime-types-data (~> 3.2015) mime-types-data (3.2016.0521) - mini_portile2 (2.2.0) - mini_racer (0.1.9) - libv8 (~> 5.3) + mini_mime (1.0.0) + mini_portile2 (2.3.0) + mini_racer (0.1.14) + libv8 (~> 5.9) minitest (5.10.3) - multi_json (1.12.1) + multi_json (1.12.2) nio4r (2.1.0) - nokogiri (1.8.0) - mini_portile2 (~> 2.2.0) - parser (2.4.0.0) - ast (~> 2.2) - pg (0.20.0) - poltergeist (1.15.0) + nokogiri (1.8.1) + mini_portile2 (~> 2.3.0) + parallel (1.12.0) + parser (2.4.0.2) + ast (~> 2.3) + pg (0.21.0) + poltergeist (1.16.0) capybara (~> 2.1) cliver (~> 0.3.1) websocket-driver (>= 0.2.0) powerpack (0.1.1) - pry (0.10.4) + pry (0.11.3) coderay (~> 1.1.0) - method_source (~> 0.8.1) - slop (~> 3.4) - pry-byebug (3.4.2) - byebug (~> 9.0) + method_source (~> 0.9.0) + pry-byebug (3.5.0) + byebug (~> 9.1) pry (~> 0.10) - pry-doc (0.10.0) + pry-doc (0.11.1) pry (~> 0.9) yard (~> 0.9) pry-rails (0.3.6) @@ -166,42 +173,50 @@ GEM pry-stack_explorer (0.4.9.2) binding_of_caller (>= 0.7) pry (>= 0.9.11) - public_suffix (2.0.5) - puma (3.8.2) + public_suffix (3.0.1) + puma (3.11.0) rack (2.0.3) rack-proxy (0.6.2) rack - rack-test (0.6.3) - rack (>= 1.0) - rails (5.1.3) - actioncable (= 5.1.3) - actionmailer (= 5.1.3) - actionpack (= 5.1.3) - actionview (= 5.1.3) - activejob (= 5.1.3) - activemodel (= 5.1.3) - activerecord (= 5.1.3) - activesupport (= 5.1.3) + rack-test (0.8.0) + rack (>= 1.0, < 3) + rails (5.1.4) + actioncable (= 5.1.4) + actionmailer (= 5.1.4) + actionpack (= 5.1.4) + actionview (= 5.1.4) + activejob (= 5.1.4) + activemodel (= 5.1.4) + activerecord (= 5.1.4) + activesupport (= 5.1.4) bundler (>= 1.3.0) - railties (= 5.1.3) + railties (= 5.1.4) sprockets-rails (>= 2.0.0) rails-dom-testing (2.0.3) activesupport (>= 4.2.0) nokogiri (>= 1.6) rails-html-sanitizer (1.0.3) loofah (~> 2.0) - railties (5.1.3) - actionpack (= 5.1.3) - activesupport (= 5.1.3) + rails_best_practices (1.19.0) + activesupport + code_analyzer (>= 0.4.8) + erubis + i18n + json + require_all + ruby-progressbar + railties (5.1.4) + actionpack (= 5.1.4) + activesupport (= 5.1.4) method_source rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) rainbow (2.2.2) rake - rake (12.0.0) - rb-fsevent (0.9.8) - rb-inotify (0.9.8) - ffi (>= 0.5.0) + rake (12.3.0) + rb-fsevent (0.10.2) + rb-inotify (0.9.10) + ffi (>= 0.5.0, < 2) rdoc (4.3.0) react_on_rails (10.0.0) addressable @@ -209,7 +224,8 @@ GEM execjs (~> 2.5) rails (>= 3.2) rainbow (~> 2.2) - redis (4.0.1) + redis (3.3.3) + require_all (1.4.0) rspec-core (3.6.0) rspec-support (~> 3.6.0) rspec-expectations (3.6.0) @@ -218,7 +234,7 @@ GEM rspec-mocks (3.6.0) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.6.0) - rspec-rails (3.6.0) + rspec-rails (3.6.1) actionpack (>= 3.0) activesupport (>= 3.0) railties (>= 3.0) @@ -226,45 +242,50 @@ GEM rspec-expectations (~> 3.6.0) rspec-mocks (~> 3.6.0) rspec-support (~> 3.6.0) - rspec-retry (0.5.4) - rspec-core (> 3.3, < 3.7) + rspec-retry (0.5.6) + rspec-core (> 3.3, < 3.8) rspec-support (3.6.0) - rubocop (0.48.1) + rubocop (0.51.0) + parallel (~> 1.10) parser (>= 2.3.3.1, < 3.0) powerpack (~> 0.1) - rainbow (>= 1.99.1, < 3.0) + rainbow (>= 2.2.2, < 3.0) ruby-progressbar (~> 1.7) unicode-display_width (~> 1.0, >= 1.0.1) ruby-lint (2.3.1) parser (~> 2.2) slop (~> 3.4, >= 3.4.7) - ruby-progressbar (1.8.1) + ruby-progressbar (1.9.0) ruby_dep (1.5.0) rubyzip (1.2.1) - sass (3.4.23) - sass-rails (5.0.6) + sass (3.5.3) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + sass-rails (5.0.7) railties (>= 4.0.0, < 6) sass (~> 3.1) sprockets (>= 2.8, < 4.0) sprockets-rails (>= 2.0, < 4.0) tilt (>= 1.1, < 3) - scss_lint (0.52.0) + scss_lint (0.56.0) rake (>= 0.9, < 13) - sass (~> 3.4.20) + sass (~> 3.5.3) sdoc (0.4.2) json (~> 1.7, >= 1.7.7) rdoc (~> 4.0) - selenium-webdriver (2.53.4) + selenium-webdriver (3.7.0) childprocess (~> 0.5) rubyzip (~> 1.0) - websocket (~> 1.0) + sexp_processor (4.10.0) simplecov (0.14.1) docile (~> 1.1.0) json (>= 1.8, < 3) simplecov-html (~> 0.10.0) - simplecov-html (0.10.0) + simplecov-html (0.10.2) slop (3.6.0) - spring (2.0.1) + spring (2.0.2) activesupport (>= 4.2) spring-commands-rspec (1.0.4) spring (>= 0.9.1) @@ -275,33 +296,32 @@ GEM actionpack (>= 4.0) activesupport (>= 4.0) sprockets (>= 3.0.0) - term-ansicolor (1.5.0) + term-ansicolor (1.6.0) tins (~> 1.0) thor (0.19.4) thread_safe (0.3.6) - tilt (2.0.7) - tins (1.13.2) - tzinfo (1.2.3) + tilt (2.0.8) + tins (1.15.1) + tzinfo (1.2.4) thread_safe (~> 0.1) - uglifier (3.1.13) + uglifier (3.2.0) execjs (>= 0.3.0, < 3) - unicode-display_width (1.1.3) - web-console (3.5.0) + unicode-display_width (1.3.0) + web-console (3.5.1) actionview (>= 5.0) activemodel (>= 5.0) bindex (>= 0.4.0) railties (>= 5.0) - webpacker (3.0.1) + webpacker (3.0.2) activesupport (>= 4.2) rack-proxy (>= 0.6.1) railties (>= 4.2) - websocket (1.2.4) websocket-driver (0.6.5) websocket-extensions (>= 0.1.0) - websocket-extensions (0.1.2) + websocket-extensions (0.1.3) xpath (2.1.0) nokogiri (~> 1.3) - yard (0.9.8) + yard (0.9.10) PLATFORMS ruby @@ -311,14 +331,14 @@ DEPENDENCIES awesome_print brakeman bundler-audit - capybara + capybara (= 2.13.0) capybara-screenshot - capybara-webkit + capybara-webkit (= 1.14.0) chromedriver-helper coffee-rails coveralls database_cleaner - factory_girl_rails + factory_bot_rails foreman generator_spec jbuilder @@ -336,17 +356,18 @@ DEPENDENCIES puma rails (~> 5) rails-html-sanitizer + rails_best_practices rainbow react_on_rails (= 10.0.0) - redis - rspec-rails (~> 3.6) + redis (= 3.3.3) + rspec-rails (= 3.6.1) rspec-retry rubocop ruby-lint sass-rails scss_lint sdoc - selenium-webdriver (< 3.0.0) + selenium-webdriver spring spring-commands-rspec uglifier @@ -357,4 +378,4 @@ RUBY VERSION ruby 2.4.1p111 BUNDLED WITH - 1.15.4 + 1.16.0 diff --git a/app/controllers/comments_controller.rb b/app/controllers/comments_controller.rb index 66c87759..7968a3f2 100644 --- a/app/controllers/comments_controller.rb +++ b/app/controllers/comments_controller.rb @@ -52,7 +52,7 @@ def update # DELETE /comments/1 # DELETE /comments/1.json def destroy - @comment.destroy + @comment.destroy! respond_to do |format| format.html { redirect_to comments_url, notice: "Comment was successfully destroyed." } format.json { head :no_content } diff --git a/app/helpers/comments_helper.rb b/app/helpers/comments_helper.rb deleted file mode 100644 index 0ec9ca5f..00000000 --- a/app/helpers/comments_helper.rb +++ /dev/null @@ -1,2 +0,0 @@ -module CommentsHelper -end diff --git a/app/views/comments/_form.html.erb b/app/views/comments/_form.html.erb index 2c82f17c..7b5dd495 100644 --- a/app/views/comments/_form.html.erb +++ b/app/views/comments/_form.html.erb @@ -1,10 +1,10 @@ -<%= form_for(@comment) do |f| %> - <% if @comment.errors.any? %> +<%= form_for(comment) do |f| %> + <% if comment.errors.any? %>
-

<%= pluralize(@comment.errors.count, "error") %> prohibited this comment from being saved:

+

<%= pluralize(comment.errors.count, "error") %> prohibited this comment from being saved:

diff --git a/app/views/comments/edit.html.erb b/app/views/comments/edit.html.erb index a86a8b01..a20be1d1 100644 --- a/app/views/comments/edit.html.erb +++ b/app/views/comments/edit.html.erb @@ -1,6 +1,6 @@

Editing Comment

-<%= render 'form' %> +<%= render 'form', comment: @comment %> <%= link_to 'Show', @comment %> | <%= link_to 'Back', comments_path %> diff --git a/app/views/comments/new.html.erb b/app/views/comments/new.html.erb index 17b22f25..f8b43b6b 100644 --- a/app/views/comments/new.html.erb +++ b/app/views/comments/new.html.erb @@ -1,5 +1,5 @@

New Comment

-<%= render 'form' %> +<%= render 'form', comment: @comment %> <%= link_to 'Back', comments_path %> diff --git a/client/package.json b/client/package.json index 7a9e12b7..97e7ea35 100644 --- a/client/package.json +++ b/client/package.json @@ -4,7 +4,7 @@ "description": "Code from the React Webpack tutorial.", "main": "server-express.js", "engines": { - "node": "^7.8.0 || ^8.0.0", + "node": "^7.8.0 || ^8.0.0 || ^9.2.0", "npm": "^4.4.4 || ^5.0.0", "yarn": "^1.0.0" }, @@ -26,7 +26,7 @@ "homepage": "https://github.com/shakacode/react-webpack-rails-tutorial", "scripts": { "postinstall": "npm rebuild node-sass", - "test": "NODE_PATH=./app mocha --compilers js:babel-core/register --require ./app/libs/testHelper.js --require ./app/libs/testNullCompiler.js 'app/**/*.spec.@(js|jsx)'", + "test": "NODE_PATH=./app mocha --require babel-core/register --require ./app/libs/testHelper.js --require ./app/libs/testNullCompiler.js 'app/**/*.spec.@(js|jsx)'", "test:debug": "yarn run test -- --debug-brk", "start": "babel-node server-express.js", "build:production:client": "NODE_ENV=production webpack -p --config webpack.client.rails.build.config.js", diff --git a/client/yarn.lock b/client/yarn.lock index 1cc52d8a..64a8acad 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -266,7 +266,7 @@ async-foreach@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" -async@2.4.1: +async@2.4.1, async@^2.1.2, async@^2.1.4, async@^2.1.5, async@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/async/-/async-2.4.1.tgz#62a56b279c98a11d0987096a01cc3eeb8eb7bbd7" dependencies: @@ -276,18 +276,6 @@ async@^1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@^2.1.2, async@^2.1.4, async@^2.1.5: - version "2.3.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.3.0.tgz#1013d1051047dd320fe24e494d5c66ecaf6147d9" - dependencies: - lodash "^4.14.0" - -async@^2.4.1: - version "2.5.0" - resolved "https://registry.yarnpkg.com/async/-/async-2.5.0.tgz#843190fd6b7357a0b9e1c956edddd5ec8462b54d" - dependencies: - lodash "^4.14.0" - asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -1077,10 +1065,6 @@ balanced-match@^0.4.1, balanced-match@^0.4.2: version "0.4.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - base64-js@^1.0.2: version "1.2.0" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1" @@ -1174,20 +1158,13 @@ bootstrap-sass@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/bootstrap-sass/-/bootstrap-sass-3.3.7.tgz#6596c7ab40f6637393323ab0bc80d064fc630498" -brace-expansion@^1.0.0: +brace-expansion@^1.0.0, brace-expansion@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59" dependencies: balanced-match "^0.4.1" concat-map "0.0.1" -brace-expansion@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - braces@^1.8.2: version "1.8.5" resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" @@ -2093,11 +2070,7 @@ ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" -electron-to-chromium@^1.2.7: - version "1.3.3" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.3.tgz#651eb63fe89f39db70ffc8dbd5d9b66958bc6a0e" - -electron-to-chromium@^1.3.24: +electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.24: version "1.3.26" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.26.tgz#996427294861a74d9c7c82b9260ea301e8c02d66" @@ -2874,7 +2847,7 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" -glob@7.1.2, glob@^7.1.2: +glob@7.1.2, glob@^7.0.5, glob@^7.1.2, glob@~7.1.1: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -2885,7 +2858,7 @@ glob@7.1.2, glob@^7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@~7.1.1: +glob@^7.0.0, glob@^7.0.3, glob@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" dependencies: @@ -2907,11 +2880,7 @@ globals@^10.0.0: version "10.1.0" resolved "https://registry.yarnpkg.com/globals/-/globals-10.1.0.tgz#4425a1881be0d336b4a823a82a7be725d5dd987c" -globals@^9.0.0: - version "9.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" - -globals@^9.17.0: +globals@^9.0.0, globals@^9.17.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -3163,11 +3132,11 @@ iconv-lite@0.4.13: version "0.4.13" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2" -iconv-lite@0.4.15, iconv-lite@~0.4.13: +iconv-lite@0.4.15: version "0.4.15" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" -iconv-lite@^0.4.17: +iconv-lite@^0.4.17, iconv-lite@~0.4.13: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" @@ -3568,20 +3537,20 @@ js-tokens@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" -js-yaml@^3.4.3, js-yaml@^3.7.0, js-yaml@^3.8.2: - version "3.8.3" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.3.tgz#33a05ec481c850c8875929166fe1beb61c728766" - dependencies: - argparse "^1.0.7" - esprima "^3.1.1" - -js-yaml@^3.9.1: +js-yaml@^3.4.3, js-yaml@^3.9.1: version "3.10.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" dependencies: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^3.7.0, js-yaml@^3.8.2: + version "3.8.3" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.3.tgz#33a05ec481c850c8875929166fe1beb61c728766" + dependencies: + argparse "^1.0.7" + esprima "^3.1.1" + js-yaml@~3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.7.0.tgz#5c967ddd837a9bfdca5f2de84253abe8a1c03b80" @@ -4033,31 +4002,31 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -"mime-db@>= 1.27.0 < 2", mime-db@~1.27.0: - version "1.27.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" - -mime-db@~1.30.0: +"mime-db@>= 1.27.0 < 2", mime-db@~1.30.0: version "1.30.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01" -mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7: - version "2.1.15" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" - dependencies: - mime-db "~1.27.0" +mime-db@~1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.27.0.tgz#820f572296bbd20ec25ed55e5b5de869e5436eb1" -mime-types@~2.1.17: +mime-types@^2.1.12, mime-types@~2.1.17: version "2.1.17" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a" dependencies: mime-db "~1.30.0" -mime@1.3.4, mime@^1.3.4: +mime-types@~2.1.11, mime-types@~2.1.15, mime-types@~2.1.7: + version "2.1.15" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.15.tgz#a4ebf5064094569237b8cf70046776d09fc92aed" + dependencies: + mime-db "~1.27.0" + +mime@1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" -mime@^1.4.1: +mime@^1.3.4, mime@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" @@ -4079,18 +4048,18 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" -minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@~3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" - dependencies: - brace-expansion "^1.0.0" - -minimatch@^3.0.4: +minimatch@^3.0.0, minimatch@^3.0.4, minimatch@~3.0.2: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" dependencies: brace-expansion "^1.1.7" +minimatch@^3.0.2, minimatch@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" + dependencies: + brace-expansion "^1.0.0" + minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" @@ -4976,14 +4945,14 @@ prop-types-extra@^1.0.1: dependencies: warning "^3.0.0" -prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.8: +prop-types@^15.5.10: version "15.5.10" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.10.tgz#2797dfc3126182e3a95e3dfbb2e893ddd7456154" dependencies: fbjs "^0.8.9" loose-envify "^1.3.1" -prop-types@^15.6.0: +prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.8, prop-types@^15.6.0: version "15.6.0" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856" dependencies: @@ -5239,14 +5208,7 @@ react-on-rails@^10.0.0: react-on-rails "^9.0.3" react-redux "^5.0.6" -react-on-rails@^9.0.0-beta.12: - version "9.0.0-rc.0" - resolved "https://registry.yarnpkg.com/react-on-rails/-/react-on-rails-9.0.0-rc.0.tgz#5b62bfe1f5cf99c428b0daa02de492a66c33c58e" - dependencies: - react-on-rails "^9.0.0-beta.12" - react-redux "^5.0.6" - -react-on-rails@^9.0.3: +react-on-rails@^9.0.0-beta.12, react-on-rails@^9.0.3: version "9.0.3" resolved "https://registry.yarnpkg.com/react-on-rails/-/react-on-rails-9.0.3.tgz#da8a9873a94d62fe91e1f80d76716583f2be9da7" dependencies: @@ -5520,34 +5482,7 @@ request-promise-native@^1.0.3: stealthy-require "^1.1.0" tough-cookie ">=2.3.3" -request@2, request@^2.79.0, request@^2.81.0: - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" - dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.1" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "^0.6.0" - uuid "^3.0.0" - -request@^2.83.0: +request@2, request@^2.81.0, request@^2.83.0: version "2.83.0" resolved "https://registry.yarnpkg.com/request/-/request-2.83.0.tgz#ca0b65da02ed62935887808e6f510381034e3356" dependencies: @@ -5574,6 +5509,33 @@ request@^2.83.0: tunnel-agent "^0.6.0" uuid "^3.1.0" +request@^2.79.0: + version "2.81.0" + resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" + dependencies: + aws-sign2 "~0.6.0" + aws4 "^1.2.1" + caseless "~0.12.0" + combined-stream "~1.0.5" + extend "~3.0.0" + forever-agent "~0.6.1" + form-data "~2.1.1" + har-validator "~4.2.1" + hawk "~3.1.3" + http-signature "~1.1.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.7" + oauth-sign "~0.8.1" + performance-now "^0.2.0" + qs "~6.4.0" + safe-buffer "^5.0.1" + stringstream "~0.0.4" + tough-cookie "~2.3.0" + tunnel-agent "^0.6.0" + uuid "^3.0.0" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -5911,7 +5873,7 @@ source-map@0.4.x: dependencies: amdefine ">=0.0.4" -source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3: +source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3, source-map@~0.5.6: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" @@ -5925,10 +5887,6 @@ source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" -source-map@~0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - spdx-correct@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" @@ -6228,18 +6186,12 @@ token-stream@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-0.0.1.tgz#ceeefc717a76c4316f126d0b9dbaa55d7e7df01a" -tough-cookie@>=2.3.3, tough-cookie@^2.3.3, tough-cookie@~2.3.3: +tough-cookie@>=2.3.3, tough-cookie@^2.3.3, tough-cookie@~2.3.0, tough-cookie@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" dependencies: punycode "^1.4.1" -tough-cookie@~2.3.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" - dependencies: - punycode "^1.4.1" - tr46@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" @@ -6301,16 +6253,7 @@ ua-parser-js@^0.7.9: version "0.7.12" resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.12.tgz#04c81a99bdd5dc52263ea29d24c6bf8d4818a4bb" -uglify-js@^2.6.1: - version "2.8.22" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.22.tgz#d54934778a8da14903fa29a326fb24c0ab51a1a0" - dependencies: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" - -uglify-js@^2.8.29: +uglify-js@^2.6.1, uglify-js@^2.8.29: version "2.8.29" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" dependencies: diff --git a/config/rails_best_practices.yml b/config/rails_best_practices.yml new file mode 100644 index 00000000..bb12989c --- /dev/null +++ b/config/rails_best_practices.yml @@ -0,0 +1,44 @@ +AddModelVirtualAttributeCheck: { } +AlwaysAddDbIndexCheck: { } +CheckSaveReturnValueCheck: { } +CheckDestroyReturnValueCheck: { } +DefaultScopeIsEvilCheck: { } +DryBundlerInCapistranoCheck: { } +HashSyntaxCheck: { } +IsolateSeedDataCheck: { } +KeepFindersOnTheirOwnModelCheck: { } +LawOfDemeterCheck: { } +#LongLineCheck: { max_line_length: 80 } +MoveCodeIntoControllerCheck: { } +MoveCodeIntoHelperCheck: { array_count: 3 } +MoveCodeIntoModelCheck: { use_count: 2 } +MoveFinderToNamedScopeCheck: { } +MoveModelLogicIntoModelCheck: { use_count: 4 } +NeedlessDeepNestingCheck: { nested_count: 2 } +NotRescueExceptionCheck: { } +NotUseDefaultRouteCheck: { } +NotUseTimeAgoInWordsCheck: { } +OveruseRouteCustomizationsCheck: { customize_count: 3 } +ProtectMassAssignmentCheck: { } +RemoveEmptyHelpersCheck: { } +RemoveTabCheck: { } +RemoveTrailingWhitespaceCheck: { } +RemoveUnusedMethodsInControllersCheck: { except_methods: [] } +RemoveUnusedMethodsInHelpersCheck: { except_methods: [] } +RemoveUnusedMethodsInModelsCheck: { except_methods: [ + GitCommitSha#reset_current_sha +]} +ReplaceComplexCreationWithFactoryMethodCheck: { attribute_assignment_count: 2 } +ReplaceInstanceVariableWithLocalVariableCheck: { } +RestrictAutoGeneratedRoutesCheck: { } +SimplifyRenderInControllersCheck: { } +SimplifyRenderInViewsCheck: { } +UseBeforeFilterCheck: { customize_count: 2 } +UseModelAssociationCheck: { } +UseMultipartAlternativeAsContentTypeOfEmailCheck: { } +UseParenthesesInMethodDefCheck: { } +UseObserverCheck: { } +UseQueryAttributeCheck: { } +UseSayWithTimeInMigrationsCheck: { } +UseScopeAccessCheck: { } +UseTurboSprocketsRails3Check: { } diff --git a/lib/tasks/rails_best_practices.rake b/lib/tasks/rails_best_practices.rake new file mode 100644 index 00000000..56e4b421 --- /dev/null +++ b/lib/tasks/rails_best_practices.rake @@ -0,0 +1,6 @@ +namespace :rails_best_practices do + desc "Run Rails Best Practices" + task :run do + sh "rails_best_practices" + end +end diff --git a/package.json b/package.json index 228e2288..c2fc8698 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "ShakaCode's example of React on Rails plus React Native", "main": "server-express.js", "engines": { - "node": "^7.8.0 || ^8.0.0", + "node": "^7.8.0 || ^8.0.0 || ^9.2.0", "npm": "^4.4.4 || ^5.0.0", "yarn": "^1.0.0" }, diff --git a/spec/factories.rb b/spec/factories.rb index 5e8a27a0..8ce9a5cd 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -1,5 +1,5 @@ # This will guess the User class -FactoryGirl.define do +FactoryBot.define do factory :comment do author "John" text "This is a comment text." diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 33749bec..b1683793 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -32,7 +32,7 @@ Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f } RSpec.configure do |config| - config.include FactoryGirl::Syntax::Methods + config.include FactoryBot::Syntax::Methods # Next line will ensure that assets are built if webpack -w is not running ReactOnRails::TestHelper.configure_rspec_to_compile_assets(config, :requires_webpack_assets)