2014-01-23 3 views
0

У меня есть файл Rakefile, в котором я использую для настройки среды для приложения, у меня возникает проблема, когда задача Rake прерывается, потому что конкретный Gem установлен в важной задаче.Задачи отмены прерывания не выполняются в порядке

Пожалуйста, смотрите Rakefile ниже, Грабли прерывает на линии require 'data_mapper' в пределах :configure_db задачи, :configure_db вызывается :build и это предшествующее задачи :bower_install и :bundle_install.

ENV['JASMINE_CONFIG_PATH'] = 'spec/js/support/jasmine.yml' 

task :bower_install do 
     system 'bower install' 
end 

task :bundle_install => :bower_install do 
     system 'bundle install' 
end 

task :configure_db => :bundle_install do 
     require 'data_mapper' 

     DataMapper.setup(:default, ENV['DATABASE_URL'] || "sqlite3://#{Dir.pwd}/vela.db") 

     require './models/User.rb' 

     DataMapper.finalize 
     DataMapper.auto_migrate! 
end 


desc "Starts the Rack server so we can run our tests" 
task :default => :bundle_install do 
     require 'sinatra' 
     require 'rspec/core/rake_task' 
     require 'jasmine' 
     load 'jasmine/tasks/jasmine.rake' 

     RSpec::Core::RakeTask.new(:spec) 

     require './app' 
    system 'rackup -D' 
    Rake::Task["spec"].invoke 
    Rake::Task["jasmine:ci"].invoke 
end 

task :build => :configure_db 

ответ

0

Это Rakefile эквивалентно вашими в терминах зависимостей задач:

task :a do 
    puts 'running task a' 
end 

task :b => :a do 
    puts 'running task b' 
end 

task :c => :b do 
    puts 'running task c' 
end 

task :d => :c do 
    puts 'running task d' 
end 

task :e => :c 

Это дает мне следующие результаты:

$ rake a 
running task a 

$ rake b 
running task a 
running task b 

$ rake c 
running task a 
running task b 
running task c 

$ rake d 
running task a 
running task b 
running task c 
running task d 

$ rake e 
running task a 
running task b 
running task c 

не то, что именно то, что вам нужно? Я не вижу, где проблема.

+0

Проблема заключается в том, что мой rake-файл прерывается, потому что требуется выполнение «data_mapper» до того, как будет выполнена установка пакета. –

Смежные вопросы