我收到错误“不知道如何构建任务'编译'”。我还是 ruby 的新手,但是所有这些痕迹似乎都指向我没有编写的代码,那么我应该如何处理这个错误?
#> rake 编译 --trace 耙中止! 不知道如何构建任务“编译” /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 `'
这是 Rakefile:
需要“捆绑器/gem_tasks” 需要“耙子” 需要“耙子/扩展任务” $myDir = File.dirname(__FILE__) 需要 $myDir + '/lib/Q/console.rb' 需要 $myDir + '/lib/Q/version.rb' 需要 $myDir + '/lib/Q/rakeoverride.rb' 需要 $myDir + '/lib/Q/filetools.rb' # 这只是打印出一个标题和 gems 版本号 puts Q::Console.txHead('Q-Pool Ruby Extension Q V' + Q::VERSION) # 从 gemspec 加载规范并创建 # 每个扩展文件的任务 # 可执行文件。 规格 = Gem::Specification.load('Q.gemspec') spec.executables.each 做 |f| Rake::ExtensionTask.new('Q', spec) 做 |ext| # 扩展文件是*.so,所以我们需要 # 砍掉扩展名得到名字 ext.name = f.gsub(/\.so$/,'') ext.tmp_dir = 'tmp' ext.lib_dir = 'bin' 结尾 结尾 # 通过删除旧的二进制文件来清理环境 override_task :clean 做 puts Q::Console.txNote('cleaning...') clear_tmp 开始 Rake::Task["clean:original"].invoke puts Q::Console.txConfirm('...cleaned!') 救援 puts Q::Console.txAlert('could not clean: ' + $!.to_s) 出口 结尾 结尾 # 初始化目录结构 任务:初始化做 FileCheckCreateDirectory($myDir + '/bin') FileCheckCreateDirectory($myDir + '/tmp') 结尾 # 编译模块并安装到 lib override_task :编译做 puts Q::Console.txNote('正在编译...') 开始 Rake::Task["compile:original"].invoke 提出 Q::Console.txConfirm('...已编译!') 救援异常 puts Q::Console.txAlert('无法编译:' + $!.to_s) 出口 确保 clear_tmp 看跌期权 结尾 结尾 # 显示命令 任务:帮助做 显示帮助 结尾 # 构建模块并安装 任务 :build => [:init, :clean, :compile] Bundler::GemHelper.install_tasks # 删除所有临时文件 def clear_tmp FileUtils.rm_rf(Dir.glob($myDir + '/tmp/*')) 结尾 # 显示帮助画面 def show_help Q::Console.out(Q::Console.txCode('build') + ' 执行初始化、清理和编译。') Q::Console.out(Q::Console.txCode('clean') + ' 从 temp-dir 中删除任何旧的二进制文件。') Q::Console.out(Q::Console.txCode('compile') + ' 编译二进制文件。') Q::Console.out(Q::Console.txCode('help') + ' 登记 rake-commands (this page).') Q::Console.out(Q::Console.txCode('init') + ' 创建 gems 目录结构。') 看跌期权 结尾