Rake doesn't know how to create a compile task, how to track this error?

I get the error "I don’t know how to build a task compilation". I'm still new to the ruby, but all these tracks seem to indicate code that I haven't written, so what should I do with this error?

 #> rake compile --trace rake aborted!  Don't know how to build task 'compile' /usr/local/rvm/gems/ruby-1.9.3-p286/gems/rake-10.0.3/lib/rake/task_manager.rb:49:in `[] '/usr/local/rvm/gems/ruby-1.9.3-p286/gems/rake-10.0.3/lib/rake/application.rb:142:in `invoke_task' / usr / local / rvm / gems / ruby -1.9.3-p286 / gems / rake-10.0.3 / lib / rake / application.rb: 101: in `block (2 levels) in top_level '/usr/local/rvm/gems/ruby-1.9.3- p286 / gems / rake-10.0.3 / lib / rake / application.rb: 101: in `each '/usr/local/rvm/gems/ruby-1.9.3-p286/gems/rake-10.0.3/lib /rake/application.rb:101:in `block in top_level '/usr/local/rvm/gems/ruby-1.9.3-p286/gems/rake-10.0.3/lib/rake/application.rb:110: in `run_with_threads '/usr/local/rvm/gems/ruby-1.9.3-p286/gems/rake-10.0.3/lib/rake/application.rb:95:in` top_level' / usr / local / rvm / gems / ruby-1.9.3-p286 / gems / rake-10.0.3 / lib / rake / application.rb: 73: in `block in run '/usr/local/rvm/gems/ruby-1.9.3-p286 /gems/rake-10.0.3/lib/rake/application.rb:160:in `standard_exception_handling '/usr/local/rvm/gems/ruby-1.9.3-p286/gems/rake-10.0.3  /lib/rake/application.rb:70:in `run '/usr/local/rvm/gems/ruby-1.9.3-p286/gems/rake-10.0.3/bin/rake:33:in` `/ usr / local / rvm / gems / ruby-1.9.3-p286 / bin / rake: 23: in `load '/usr/local/rvm/gems/ruby-1.9.3-p286/bin/rake:23:in `` '' 

this is rakefile:

  require 'bundler / gem_tasks'
 require 'rake'
 require 'rake / extensiontask'
 $ myDir = File.dirname (__ FILE__)

 require $ myDir + '/lib/Q/console.rb'
 require $ myDir + '/lib/Q/version.rb'
 require $ myDir + '/lib/Q/rakeoverride.rb'
 require $ myDir + '/lib/Q/filetools.rb'

 # this just prints out a header and gems version number
 puts Q :: Console.txHead ('Q-Pool Ruby Extension QV' + Q :: VERSION)

 # load specifiation from gemspec and create
 # a task for every extension file in
 # executables
 spec = Gem :: Specification.load ('Q.gemspec')
 spec.executables.each do | f |
   Rake :: ExtensionTask.new ('Q', spec) do | ext |
     # extension file is * .so, so we need
     # to chop the extension to get the name
     ext.name = f.gsub (/ \. so $ /, '')
     ext.tmp_dir = 'tmp'
     ext.lib_dir = 'bin'
   end
 end

 # clean environment by removing old binaries
 override_task: clean do
   puts Q :: Console.txNote ('cleaning ...')
   clear_tmp
   begin
     Rake :: Task ["clean: original"]. Invoke
     puts Q :: Console.txConfirm ('... cleaned!')
   rescue
     puts Q :: Console.txAlert ('could not clean:' + $ !. to_s)
     exit
   end
 end

 # initialize directory structure
 task: init do
   FileCheckCreateDirectory ($ myDir + '/ bin')
   FileCheckCreateDirectory ($ myDir + '/ tmp')
 end

 # compile module and install to lib
 override_task: compile do
   puts Q :: Console.txNote ('compiling ...')
   begin
     Rake :: Task ["compile: original"]. Invoke
     puts Q :: Console.txConfirm ('... compiled!')
   rescue exception
     puts Q :: Console.txAlert ('could not compile:' + $ !. to_s)
     exit
   ensure
     clear_tmp
     puts
   end
 end

 # show commands
 task: help do
   show_help
 end

 # build module and install
 task: build => [: init,: clean,: compile]

 Bundler :: GemHelper.install_tasks

 # remove any temporary files
 def clear_tmp
   FileUtils.rm_rf (Dir.glob ($ myDir + '/ tmp / *'))
 end

 # display help screen
 def show_help
   Q :: Console.out (Q :: Console.txCode ('build') + 'performs init, clean and compile.')
   Q :: Console.out (Q :: Console.txCode ('clean') + 'removes any old binaries from temp-dir.')
   Q :: Console.out (Q :: Console.txCode ('compile') + 'compiles binaries.')
   Q :: Console.out (Q :: Console.txCode ('help') + 'enlists rake-commands (this page).')
   Q :: Console.out (Q :: Console.txCode ('init') + 'creates gems directory structure.')
   puts
 end

+4
source share
1 answer

Well, this error message was really little used ...

The problem was that Gem :: Specification.executables was empty due to an inappropriate regular expression in gemspec. As I repeat this (see Rakefile), there was no extensiontask assembly, therefore, a misleading error.

+2
source

All Articles