Updating Old Projects Checklist

Root files

  • Ensure .ruby-version exists in the root folder

  • Add default_whitelist.yml to root folder

  • Add .gitpod.yml to the root folder

  • Ensure Procfile exists and looks like this

  • Ungitignore /db/*.sqlite3 and /db/*.sqlite3-journal

  • Remove circle.yml file from the root folder if it exists.

bin folder

  • Replace bin/setup with this

  • Ensure

    system! "gem install bundler"
    system! "gem update bundler"

    is before system! "bundle install" in bin/setup.

  • Ensure bin/whitelist exists and looks like this

  • Ensure bin/server exists and looks like this

Initializers

In application.rb

  • Add the following line, config.action_controller.default_protect_from_forgery = false, after the load_defaults.

  • Add the following line, config.active_record.belongs_to_required_by_default = false, after the load_defaults.

  • Add the following line, config.autoload_paths += %W(#{config.root}/app/vendor_models), after the load_defaults.

  • Add the following line, config.autoload_paths += Dir["#{config.root}/app/vendor_models/**/"], after the load_defaults.

Gems

  • Include Ruby version in Gemfile

  • Remove gem "console_ip_whitelist", github: "firstdraft/console_ip_whitelist" to the development and test groups

  • Move sqlite3 gem to development and test groups

  • Add gem "tty-spinner" to development group

  • Ensure gem "annotate", '< 3.0.0' is present, if not add to the Gemfile and install it with rails g annotate:install

  • Ensure gem 'activeadmin', '2.2.0' and gem 'devise' are using the RubyGems version instead of the GitHub.

  • Add gem "better_errors" and gem "binding_of_caller" to the development and test groups

  • Remove gem "draft_log", github: "firstdraft/draft_log" if it's present and bundle.

  • 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 present

  • Ensure whitelist.yml is gitignored

  • Ensure dev_tools is removed from app/views/layouts/application.html.erb

  • Remove cloud9_plugins.sh if present, and remove its line from gitignore

  • Ensure there is no tzinfo-data warning message when executing rails commands. If there is run:

  • Ensure db:seeds is doing AdminUser.create and not AdminUser.create!

  • If vendor/app/models/ doesn't exist create it

  • Ensure admin_user.rb is not in the app/models/ folder and is instead in vendor/app/models/

  • Ensure any use of Hash#[] changes to Hash#fetch in existing code

  • Ensure that in development.rb the lines starting with path = Rails.root.join('whitelist.yml') and ending with config.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 version

  • Make 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.js

  • Get rid of *= require_tree . in application.css

  • Ensure 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 run rails grade without errors.

Last updated