Class: RspecStarter::PrepareDatabaseStep
- Defined in:
- lib/rspec_starter/steps/prepare_database_step.rb
Instance Attribute Summary
Attributes inherited from Step
Instance Method Summary collapse
- #execute ⇒ Object
- #failed? ⇒ Boolean
-
#initialize(defaults, runner) ⇒ PrepareDatabaseStep
constructor
A new instance of PrepareDatabaseStep.
- #should_execute? ⇒ Boolean
Methods inherited from Step
Constructor Details
#initialize(defaults, runner) ⇒ PrepareDatabaseStep
Returns a new instance of PrepareDatabaseStep.
3 4 5 6 7 8 9 |
# File 'lib/rspec_starter/steps/prepare_database_step.rb', line 3 def initialize(defaults, runner) super(runner) @prepare_database = defaults.fetch(:prepare_db, true) @relevant_options << '--no-prep-db' @user_wants_to_skip = ARGV.any? { |option| option.include?("--no-prep-db") } @success_or_skipped = nil # Will be updated once step executes end |
Instance Method Details
#execute ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/rspec_starter/steps/prepare_database_step.rb', line 21 def execute return @success_or_skipped = true if should_skip? rebuild_cmd = "rake db:drop db:create db:migrate RAILS_ENV=test" print "[#{@runner.step_num}] Preparing the test database with '#{rebuild_cmd.rs_yellow}' ... " _stdin, _stdout, stderr = Open3.popen3(rebuild_cmd) error_msg_array = stderr.readlines if error_msg_array.empty? puts "Success".rs_green @success_or_skipped = true else puts "\n\n" puts error_msg_array puts "\n\nThere was an error rebuilding the test database. See the output above for details.".rs_red puts "or manually run '#{rebuild_cmd}' for more information.".rs_red @success_or_skipped = false end end |
#failed? ⇒ Boolean
11 12 13 |
# File 'lib/rspec_starter/steps/prepare_database_step.rb', line 11 def failed? !@success_or_skipped end |
#should_execute? ⇒ Boolean
15 16 17 18 19 |
# File 'lib/rspec_starter/steps/prepare_database_step.rb', line 15 def should_execute? return false if @user_wants_to_skip return false unless @prepare_database @runner.app_uses_rails? end |