我收到错误“不知道如何构建任务'编译'”。我还是 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 目录结构。')
看跌期权
结尾