Commit 309e2cea authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

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

Improve setup task, by making it less dangerous
parents 4bb1664a 65c35466
...@@ -260,7 +260,7 @@ used for the `email.from` setting in `config/gitlab.yml`) ...@@ -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
......
### 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
......
namespace :gitlab do namespace :gitlab do
namespace :app do
desc "GITLAB | Setup production application" desc "GITLAB | Setup production application"
task :setup => [ task :setup => :environment do
'db:setup', setup
'db:seed_fu', end
'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
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 ...@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment