0

我在使用 rake 时遇到问题。我正在学习这门课程,它是 rspec 的介绍。它首先说要安装 rspec,所以我输入 gem install rspec。

     ruby 1.9.3p385 (2013-02-06) [i386-mingw32]

     C:\Users\Edub>gem install rspec
     Successfully installed rspec-2.13.0
     1 gem installed

然后我应该进入课程目录 cd learn_ruby 然后 cd 00_hello 但我的只有当我输入 cd learn_ruby-master\learn_ruby-master\00_hello

     C:\Users\Edub>cd learn_ruby-master\learn_ruby-master\00_hello  

然后我尝试使用 rake,就像它指示我做的那样,我得到了一些错误。我真的不知道他们是什么意思。

         C:\Users\Edub\learn_ruby-master\learn_ruby-master\00_hello>rake
         (in C:/Users/Edub/learn_ruby-master/learn_ruby-master)
         You must use ANSICON 1.31 or later (http://adoxa.3eeweb.com/ansicon/) to use         
         col
         our on Windows
         C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:45:in           
          'require': cannot load such file -- hello (LoadError)
         from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_requir
         e.rb:45:in `require'
         from C:/Users/Edub/learn_ruby-master/learn_ruby-master/00_hello/hello_sp
         ec.rb:116:in `<top (required)>'
         from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rspec-core-2.13.0/lib/rspec/cor
         e/configuration.rb:819:in `load'
         from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rspec-core-2.13.0/lib/rspec/cor
         e/configuration.rb:819:in `block in load_spec_files'
         from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rspec-core-2.13.0/lib/rspec/cor
         e/configuration.rb:819:in `each'
         from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rspec-core-2.13.0/lib/rspec/cor
         e/configuration.rb:819:in `load_spec_files'
         from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rspec-core-2.13.0/lib/rspec/cor
         e/command_line.rb:22:in `run'
         from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rspec-core-2.13.0/lib/rspec/cor
         e/runner.rb:80:in `run'
         from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rspec-core-2.13.0/lib/rspec/cor
         e/runner.rb:17:in `block in autorun'
         rake aborted!
         C:/Ruby193/bin/ruby.exe -S rspec C:/Users/Edub/learn_ruby-master/learn_ruby-              
         master/00_hello/hello_spec.rb -IC:/Users/Edub/learn_ruby-master/learn_ruby-  
         master/00_hello -IC:/Users/Edub/learn_ruby-master/learn_ruby-   
         master/00_hello/solution -fdocumentation -r ./rspec_config failed

         Tasks: TOP => default => spec
         (See full trace by running task with --trace)

然后课程说应该发生错误,并且应该看起来像这样:

      no such file to load -- test-first-teaching/hello/hello (LoadError)

好的,然后它指示我必须在标题为 hello.rb 的文本编辑器中定义一个方法,代码应如下所示:

    def hello
      "Hello!"
    end

所以我继续按照说明在 Sublime 2 中完成所有这些工作。我在 Sublime 2 hello.rb 中为程序命名并定义方法。这应该可以修复所有错误,但我仍然遇到与一开始所做的相同的长错误。

有人可以告诉我这里发生了什么以及为什么 rake 被中止。我不知道它想在这里告诉我什么。谢谢!如果我不够具体,请告诉我。

4

1 回答 1

1

我对红宝石非常陌生,但是书中的说明似乎不正确。我的理解是 rake 需要定义 rake 任务才能工作。它不像你可以做的 ruby​​ 解释器:

ruby <ruby_file.rb>

它可以解释文件。

试试看看这个网站:http ://rake.rubyforge.org/

它提供了一些关于创建 rake 任务的介绍(我之前并没有真正做过很多工作;在工作中其他人已经编写了 rake 任务,我只是使用它们来执行它们):

rake <task>

我希望这能让你开始。

编辑:

如果您确实按照我链接的网站说明进行操作,我认为在您的情况下,您会执行以下操作:

task :default => [:test]

task :test do
  ruby "hello.rb"
end

然后运行它:

rake

或者

rake test

rake 默认是在您未指定任何任务时运行的任务(换句话说,您只运行“rake”),在这种情况下,它是 :test 任务的别名。如果您愿意,您可以将 :test 命名为其他名称,但随后您需要更改默认值以指向该新符号。

我也相信耙子是一颗宝石。我认为它通常默认安装在 Ruby 中,但是如果你转到命令行并执行以下操作:

gem query --local

并且看不到那里的耙子,你必须做一个gem install rake才能得到它。

于 2013-03-18T20:41:29.007 回答