Merge pull request #2650 from riyad/setup-task-warning

Improve setup task, by making it less dangerous
This commit is contained in:
Dmitriy Zaporozhets 2013-01-17 12:40:56 -08:00
commit 309e2ceaf8
4 changed files with 47 additions and 21 deletions

View file

@ -260,7 +260,7 @@ used for the `email.from` setting in `config/gitlab.yml`)
## Initialise Database and Activate Advanced Features ## Initialise Database and Activate Advanced Features
sudo -u gitlab -H bundle exec rake gitlab:app:setup RAILS_ENV=production sudo -u gitlab -H bundle exec rake gitlab:setup RAILS_ENV=production
## Install Init Script ## Install Init Script

View file

@ -1,16 +1,3 @@
### Setup production application
Runs the following rake tasks:
* db:setup (Create the database, load the schema, and initialize with the seed data)
* db:seed_fu (Loads seed data for the current environment.)
* gitlab:app:enable_automerge (see "Features")
```
bundle exec rake gitlab:app:setup RAILS_ENV=production
```
### Gather information about GitLab and the system it runs on ### Gather information about GitLab and the system it runs on
This command gathers information about your GitLab installation and the System This command gathers information about your GitLab installation and the System

View file

@ -1,10 +1,22 @@
namespace :gitlab do namespace :gitlab do
namespace :app do desc "GITLAB | Setup production application"
desc "GITLAB | Setup production application" task :setup => :environment do
task :setup => [ setup
'db:setup', end
'db:seed_fu',
'gitlab:enable_automerge' def setup
] warn_user_is_not_gitlab
puts "This will create the necessary database tables and seed the database."
puts "You will lose any previous data stored in the database."
ask_to_continue
puts ""
Rake::Task["db:setup"].invoke
Rake::Task["db:seed_fu"].invoke
Rake::Task["gitlab:enable_automerge"].invoke
rescue Gitlab::TaskAbortedByUserError
puts "Quitting...".red
exit 1
end end
end end

View file

@ -1,5 +1,18 @@
module Gitlab
class TaskAbortedByUserError < StandardError; end
end
namespace :gitlab do namespace :gitlab do
# Ask if the user wants to continue
#
# Returns "yes" the user chose to continue
# Raises Gitlab::TaskAbortedByUserError if the user chose *not* to continue
def ask_to_continue
answer = prompt("Do you want to continue (yes/no)? ".blue, %w{yes no})
raise Gitlab::TaskAbortedByUserError unless answer == "yes"
end
# Check which OS is running # Check which OS is running
# #
# It will primarily use lsb_relase to determine the OS. # It will primarily use lsb_relase to determine the OS.
@ -22,6 +35,20 @@ namespace :gitlab do
os_name.try(:squish!) os_name.try(:squish!)
end end
# Prompt the user to input something
#
# message - the message to display before input
# choices - array of strings of acceptible answers or nil for any answer
#
# Returns the user's answer
def prompt(message, choices = nil)
begin
print(message)
answer = STDIN.gets.chomp
end while choices.present? && !choices.include?(answer)
answer
end
# Runs the given command and matches the output agains the given pattern # Runs the given command and matches the output agains the given pattern
# #
# Returns nil if nothing matched # Returns nil if nothing matched