# frozen_string_literal: true namespace :load do task :defaults do # Add rails to RVM, Rbenv and Chruby bins %i[rvm_map_bins rbenv_map_bins chruby_map_bins].each do |bins_var| bins = fetch(bins_var, []) set bins_var, bins.push('rails') unless bins.include?('rails') end # Default values set :console_env, -> { fetch(:rails_env, fetch(:stage, 'production')) } set :console_user, -> { fetch(:app_user, nil) } set :console_role, :app set :console_shell, nil end end namespace :rails do desc 'Interact with a remote rails console' task :console do args = [] args << '--sandbox' if ENV.key?('sandbox') || ENV.key?('s') run_interactively primary(fetch(:console_role)), shell: fetch(:console_shell) do within current_path do as user: fetch(:console_user) do execute(:rails, :console, '-e', fetch(:console_env), *args) end end end end desc 'Interact with a remote rails dbconsole' task :dbconsole do run_interactively primary(fetch(:console_role)), shell: fetch(:console_shell) do within current_path do as user: fetch(:console_user) do execute(:rails, :dbconsole, '-p', '-e', fetch(:console_env)) end end end end task c: :console task db: :dbconsole end