require 'rspec/core/rake_task' require 'bundler/gem_tasks' # require 'rake/extensiontask' # spec = Gem::Specification.load('calc.gemspec') # Rake::ExtensionTask.new('calc', spec) desc 'Default: run specs.' task :default => :spec desc "Run specs" RSpec::Core::RakeTask.new do |t| t.pattern = "./spec/**/*_spec.rb" # don't need this, it's default. # Put spec opts in a file named .rspec in root end desc "Generate code coverage" RSpec::Core::RakeTask.new(:coverage) do |t| t.pattern = "./spec/**/*_spec.rb" # don't need this, it's default. end require 'rake/testtask' require 'rake/clean' NAME = 'calc' # rule to build the extension: this says # that the extension should be rebuilt # after any change to the files in ext file "lib/#{NAME}/#{NAME}.so" => Dir.glob("ext/#{NAME}/*{.rb,.c}") do Dir.chdir("ext/#{NAME}") do # this does essentially the same thing # as what RubyGems does ruby "extconf.rb" sh "make" end cp "ext/#{NAME}/#{NAME}.so", "lib/#{NAME}" end # make the :test task depend on the shared # object, so it will be built automatically # before running the tests task :spec => "lib/#{NAME}/#{NAME}.so" # use 'rake clean' and 'rake clobber' to # easily delete generated files CLEAN.include('ext/**/*{.o,.log,.so}') CLEAN.include('ext/**/Makefile') CLOBBER.include('lib/**/*.so')