Skip to content

Commit

Permalink
Merge pull request instructure#226 from grahamb/account-settings
Browse files Browse the repository at this point in the history
add a sfu rake task to reset account settings after a clone
  • Loading branch information
grahamb committed Sep 22, 2015
2 parents 37dd6f4 + 25b9494 commit bb4bb14
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 2 deletions.
6 changes: 5 additions & 1 deletion config/deploy.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
lock '3.2.1'

set :application, 'canvas'
set :repo_url, 'https://github.com/sfu/canvas-lms.git'
set :repo_url, ENV['repo'] || 'https://github.com/sfu/canvas-lms.git'
set :scm, 'git'
set :branch, ENV['branch'] || 'sfu-deploy'
set :user, 'canvasuser'
Expand All @@ -16,6 +16,10 @@
set :bundle_without, nil
set :bundle_flags, ""

# resets Account.name and Account.lti_guid according to values in sfu.yml
# don't do this on production
set :reset_account_settings, true

set :ssh_options, {
forward_agent: true,
keys: [File.join(ENV["HOME"], ".ssh", "id_rsa_canvas")],
Expand Down
1 change: 1 addition & 0 deletions config/deploy/production.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
set :stage, :production
set :app_node_prefix, "canvas-ap"
set :canvas_url, 'https://canvas.sfu.ca'
set :reset_account_settings, false

role :db, %w{canvas-mp1.tier2.sfu.ca canvas-mp2.tier2.sfu.ca}

Expand Down
15 changes: 14 additions & 1 deletion lib/capistrano/tasks/canvas.rake
Original file line number Diff line number Diff line change
Expand Up @@ -64,4 +64,17 @@ namespace :canvas do
end
end

end
desc "Reset account settings for non-production environments"
task :reset_account_settings do
next unless fetch(:reset_account_settings)
on primary :db do
within release_path do
with rails_env: fetch(:rails_env) do
stage = fetch :stage
execute :rake, "sfu:account_settings[#{stage}]"
end
end
end
end

end
28 changes: 28 additions & 0 deletions lib/tasks/sfu.rake
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
require 'yaml'

namespace :sfu do
desc 'Reset the default Account name and lti_guid. These values need to be reset after a clone from production.'
task :account_settings, [:stage] => :environment do |t, args|
stage = args[:stage]
raise "You must specify a Canvas Capistrano stage (e.g. testing, staging, etc). `rake sfu:account_settings[stage_name]`" if stage.nil?
sfu = YAML.load_file './config/sfu.yml'
raise "sfu.yml does not contain a `account_settings` block." if sfu['account_settings'].nil?
raise "You specified `#{stage}` as the stage, but no such stage is defined in sfu.yml." unless sfu['account_settings'].include? stage

account_settings = sfu['account_settings'][stage]
a = Account.default
puts "Current Account settings:"
puts " name: #{a.name}"
puts " lti_guid: #{a.lti_guid}"

puts "Resetting account settings:"
puts " name: #{account_settings['name']}"
puts " lti_guid: #{account_settings['lti_guid']}"

Account.transaction do
a.name = account_settings['name']
a.lti_guid = account_settings['lti_guid']
a.save!
end
end
end

0 comments on commit bb4bb14

Please sign in to comment.