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:
- <% @comment.errors.full_messages.each do |message| %>
+ <% comment.errors.full_messages.each do |message| %>
- <%= message %>
<% end %>
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)