Updating Old Projects Checklist
Root files
Ensure
.ruby-version
exists in the root folderAdd default_whitelist.yml to root folder
Add .gitpod.yml to the root folder
Ensure
Procfile
exists and looks like thisUngitignore
/db/*.sqlite3
and/db/*.sqlite3-journal
Remove
circle.yml
file from the root folder if it exists.
bin folder
Replace
bin/setup
with thisEnsure
is before
system! "bundle install"
inbin/setup
.Ensure
bin/whitelist
exists and looks like thisEnsure
bin/server
exists and looks like this
Initializers
Add a file nicer_errors.rb to
config/initializers
Replace the out-of-the-box backtrack_silencers.rb with this
Add a file delegation_monkey_patch.rb to
config/initializers
Add a file active_record_relation_patch.rb to
config/initializers
Add a file attribute-methods-patch.rb to
config/initializers
Add a file fetch_store_patch.rb to
config/initializers
Ensure
open_uri.rb
inconfig/initializers
looks like thisIf
initializers/new_framework_defaults.rb
is present, remove it. Make sure that updating the app to a new Rails version did not break any behavior in the app.
In application.rb
Add the following line,
config.action_controller.default_protect_from_forgery = false
, after theload_defaults
.Add the following line,
config.active_record.belongs_to_required_by_default = false
, after theload_defaults
.Add the following line,
config.autoload_paths += %W(#{config.root}/app/vendor_models)
, after theload_defaults
.Add the following line,
config.autoload_paths += Dir["#{config.root}/app/vendor_models/**/"]
, after theload_defaults
.
Gems
Include Ruby version in
Gemfile
Remove
gem "console_ip_whitelist", github: "firstdraft/console_ip_whitelist"
to the development and test groupsMove
sqlite3
gem to development and test groupsAdd
gem "tty-spinner"
to development groupEnsure
gem "annotate", '< 3.0.0'
is present, if not add to theGemfile
and install it withrails g annotate:install
Ensure
gem 'activeadmin', '2.2.0'
andgem 'devise'
are using the RubyGems version instead of the GitHub.Add
gem "better_errors"
andgem "binding_of_caller"
to the development and test groupsRemove
gem "draft_log", github: "firstdraft/draft_log"
if it's present andbundle
.Ensure that
gem "web_git", github: "firstdraft/web_git
is included. Start the server and ensure that navigating to/git
works.Ensure all projects are ready to deploy to Heroku:
General
git rm whitelist.yml
if presentEnsure
whitelist.yml
is gitignoredEnsure
dev_tools
is removed fromapp/views/layouts/application.html.erb
Remove
cloud9_plugins.sh
if present, and remove its line fromgitignore
Ensure there is no tzinfo-data warning message when executing
rails
commands. If there is run:Ensure
db:seeds
is doingAdminUser.create
and notAdminUser.create!
If
vendor/app/models/
doesn't exist create itEnsure
admin_user.rb
is not in theapp/models/
folder and is instead invendor/app/models/
Ensure any use of Hash#[] changes to Hash#fetch in existing code
Ensure that in
development.rb
the lines starting withpath = Rails.root.join('whitelist.yml')
and ending withconfig.action_mailer.default_url_options = { host: "localhost", port: 3000 }
(non-inclusive) is replaced with:Make sure the project setup steps in README are modern
bundle update
with the same minor Rails versionMake sure templates are explicitly rendered with the folder name, e.g.
render("photo_templates/show.html.erb")
Make sure tests are all isolated in their own describe block that contains the action path, e.g "/coffee_beans" instead of "coffee beans index"
Make sure all tests that have only_path: true get replaced with ignore_query: true
Get rid of
//= require_tree
. in application.jsGet rid of
*= require_tree
. in application.cssEnsure that all targets have a rake task that runs every hour or so to reset the dev:prime data (since students fill it with garbage)
Open the project in Gitpod, ensure that
bin/setup
completes, navigate to/git
,/admin
and ensure you can login. Ensure you can runrails grade
without errors.
Last updated