使用1.9哈希语法运行Metrical

时间:2012-07-28 11:11:30

标签: ruby ruby-1.9 metrical ruby-parser

我希望将Metrical与我的全新Rails项目一起使用,使用Ruby 1.9哈希语法来处理

这样的事情
  before_filter :guest_user,     only: [:new, :create]
  before_filter :correct_user,   only: :destroy

我收到此错误:

/Users/xxx/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/racc/parser.rb:351:in `on_error':  (Racc::ParseError)
parse error on value ":" (tCOLON)

我做了一些调查,发现ruby_parser gem不支持1.9哈希语法(see github issue) - 不知道引用哪个版本我试图将ruby_parser gem更新为2.3.1这是行不通的,因为metrical中包含的一些代码质量工具需要2.0版本的ruby_parser。

有没有办法解决这个问题(除了回滚到旧语法)?我也有点困惑,因为一些代码质量工具似乎已经过时,检查RubyToolBox确认了这一印象。或者我错过了一些基本的东西?

(这是我的Gemfile.lock供参考):

    GEM
      remote: https://rubygems.org/
      specs:
        Saikuro (1.1.0)
        actionmailer (3.2.6)
          actionpack (= 3.2.6)
          mail (~> 2.4.4)
        actionpack (3.2.6)
          activemodel (= 3.2.6)
          activesupport (= 3.2.6)
          builder (~> 3.0.0)
          erubis (~> 2.7.0)
          journey (~> 1.0.1)
          rack (~> 1.4.0)
          rack-cache (~> 1.2)
          rack-test (~> 0.6.1)
          sprockets (~> 2.1.3)
        activemodel (3.2.6)
          activesupport (= 3.2.6)
          builder (~> 3.0.0)
        activerecord (3.2.6)
          activemodel (= 3.2.6)
          activesupport (= 3.2.6)
          arel (~> 3.0.2)
          tzinfo (~> 0.3.29)
        activeresource (3.2.6)
          activemodel (= 3.2.6)
          activesupport (= 3.2.6)
        activesupport (3.2.6)
          i18n (~> 0.6)
          multi_json (~> 1.0)
        addressable (2.2.8)
        arel (3.0.2)
        arrayfields (4.7.4)
        awesome_print (1.0.2)
        bcrypt-ruby (3.0.1)
        bootstrap-sass (2.0.4.0)
        bootstrap-will_paginate (0.0.7)
          will_paginate
        builder (3.0.0)
        capybara (1.1.2)
          mime-types (>= 1.16)
          nokogiri (>= 1.3.3)
          rack (>= 1.0.0)
          rack-test (>= 0.5.4)
          selenium-webdriver (~> 2.0)
          xpath (~> 0.1.4)
        childprocess (0.3.4)
          ffi (~> 1.0, >= 1.0.6)
        chronic (0.3.0)
        churn (0.0.13)
          chronic (>= 0.2.3)
          hirb
          json_pure
          main
          ruby_parser (~> 2.0.4)
          sexp_processor (~> 3.0.3)
        coffee-rails (3.2.2)
          coffee-script (>= 2.2.0)
          railties (~> 3.2.0)
        coffee-script (2.2.0)
          coffee-script-source
          execjs
        coffee-script-source (1.3.3)
        colored (1.2)
        cucumber (1.2.1)
          builder (>= 2.1.2)
          diff-lcs (>= 1.1.3)
          gherkin (~> 2.11.0)
          json (>= 1.4.6)
        cucumber-rails (1.3.0)
          capybara (>= 1.1.2)
          cucumber (>= 1.1.8)
          nokogiri (>= 1.5.0)
        database_cleaner (0.7.2)
        diff-lcs (1.1.3)
        erubis (2.7.0)
        execjs (1.4.0)
          multi_json (~> 1.0)
        factory_girl (3.5.0)
          activesupport (>= 3.0.0)
        factory_girl_rails (3.5.0)
          factory_girl (~> 3.5.0)
          railties (>= 3.0.0)
        faker (1.0.1)
          i18n (~> 0.4)
        fattr (2.2.1)
        ffi (1.1.0)
        flay (1.4.3)
          ruby_parser (~> 2.0)
          sexp_processor (~> 3.0)
        flog (2.5.3)
          ruby_parser (~> 2.0)
          sexp_processor (~> 3.0)
        gherkin (2.11.1)
          json (>= 1.4.6)
        growl (1.0.3)
        guard (1.2.3)
          listen (>= 0.4.2)
          thor (>= 0.14.6)
        guard-rspec (1.2.0)
          guard (>= 1.1)
        guard-spork (1.1.0)
          guard (>= 1.1)
          spork (>= 0.8.4)
        hike (1.2.1)
        hirb (0.7.0)
        i18n (0.6.0)
        journey (1.0.4)
        jquery-rails (2.0.2)
          railties (>= 3.2.0, < 5.0)
          thor (~> 0.14)
        json (1.7.3)
        json_pure (1.7.3)
        launchy (2.1.0)
          addressable (~> 2.2.6)
        libwebsocket (0.1.4)
          addressable
        listen (0.4.7)
          rb-fchange (~> 0.0.5)
          rb-fsevent (~> 0.9.1)
          rb-inotify (~> 0.8.8)
        mail (2.4.4)
          i18n (>= 0.4.0)
          mime-types (~> 1.16)
          treetop (~> 1.4.8)
        main (4.7.1)
        map (6.2.0)
        metric_fu (2.1.1)
          Saikuro (>= 1.1.0)
          activesupport (>= 2.0.0)
          chronic (~> 0.3.0)
          churn (>= 0.0.7)
          flay (>= 1.2.1)
          flog (>= 2.3.0)
          rails_best_practices (>= 0.6.4)
          rcov (>= 0.8.3.3)
          reek (>= 1.2.6)
          roodi (>= 2.1.0)
          syntax
        metrical (0.1.0)
          metric_fu (~> 2.1.1)
          rcov (~> 0.9)
        mime-types (1.19)
        multi_json (1.3.6)
        nokogiri (1.5.5)
        pg (0.14.0)
        polyglot (0.3.3)
        progressbar (0.11.0)
        rack (1.4.1)
        rack-cache (1.2)
          rack (>= 0.4)
        rack-ssl (1.3.2)
          rack
        rack-test (0.6.1)
          rack (>= 1.0)
        rails (3.2.6)
          actionmailer (= 3.2.6)
          actionpack (= 3.2.6)
          activerecord (= 3.2.6)
          activeresource (= 3.2.6)
          activesupport (= 3.2.6)
          bundler (~> 1.0)
          railties (= 3.2.6)
        rails_best_practices (1.10.1)
          activesupport
          awesome_print
          colored
          erubis
          i18n
          progressbar
          sexp_processor
        railties (3.2.6)
          actionpack (= 3.2.6)
          activesupport (= 3.2.6)
          rack-ssl (~> 1.3.2)
          rake (>= 0.8.7)
          rdoc (~> 3.4)
          thor (>= 0.14.6, < 2.0)
        rake (0.9.2.2)
        rb-fchange (0.0.5)
          ffi
        rb-fsevent (0.9.1)
        rb-inotify (0.8.8)
          ffi (>= 0.5.0)
        rcov (0.9.11)
        rdoc (3.12)
          json (~> 1.4)
        reek (1.2.12)
          ripper_ruby_parser (~> 0.0.7)
          ruby2ruby (~> 1.2.5)
          ruby_parser (~> 2.0)
          sexp_processor (~> 3.0)
        ripper_ruby_parser (0.0.8)
          sexp_processor (~> 3.0)
        roodi (2.1.0)
          ruby_parser
        rspec (2.11.0)
          rspec-core (~> 2.11.0)
          rspec-expectations (~> 2.11.0)
          rspec-mocks (~> 2.11.0)
        rspec-core (2.11.1)
        rspec-expectations (2.11.1)
          diff-lcs (~> 1.1.3)
        rspec-mocks (2.11.1)
        rspec-rails (2.11.0)
          actionpack (>= 3.0)
          activesupport (>= 3.0)
          railties (>= 3.0)
          rspec (~> 2.11.0)
        ruby2ruby (1.2.5)
          ruby_parser (~> 2.0)
          sexp_processor (~> 3.0)
        ruby_parser (2.0.6)
          sexp_processor (~> 3.0)
        rubyzip (0.9.9)
        sass (3.1.20)
        sass-rails (3.2.5)
          railties (~> 3.2.0)
          sass (>= 3.1.10)
          tilt (~> 1.3)
        selenium-webdriver (2.25.0)
          childprocess (>= 0.2.5)
          libwebsocket (~> 0.1.3)
          multi_json (~> 1.0)
          rubyzip
        sexp_processor (3.0.10)
        simplecov (0.6.4)
          multi_json (~> 1.0)
          simplecov-html (~> 0.5.3)
        simplecov-html (0.5.3)
        spork (0.9.2)
        sprockets (2.1.3)
          hike (~> 1.2)
          rack (~> 1.0)
          tilt (~> 1.1, != 1.3.0)
        sqlite3 (1.3.6)
        syntax (1.0.0)
        thor (0.15.4)
        tilt (1.3.3)
        treetop (1.4.10)
          polyglot
          polyglot (>= 0.3.1)
        tzinfo (0.3.33)
        uglifier (1.2.6)
          execjs (>= 0.3.0)
          multi_json (~> 1.3)
        will_paginate (3.0.3)
        xpath (0.1.4)
          nokogiri (~> 1.3)

    PLATFORMS
      ruby

    DEPENDENCIES
      arrayfields
      bcrypt-ruby
      bootstrap-sass
      bootstrap-will_paginate
      capybara
      coffee-rails
      cucumber-rails
      database_cleaner
      factory_girl_rails
      faker
      fattr
      growl
      guard-rspec
      guard-spork
      jquery-rails
      launchy
      map
      metrical
      pg
      rails (= 3.2.6)
      rb-fsevent
      rspec-rails
      sass-rails
      simplecov
      spork
      sqlite3
      uglifier
      will_paginate

1 个答案:

答案 0 :(得分:2)

在对这个问题做了一些更多的研究之后,并认为ruby_parser暂时不会更新(虽然看https://github.com/seattlerb/ruby_parser)但我决定最终选择讨厌的黑客取代我的红宝石哈希用旧的语法。我为此编写了一个rake任务,以便在一次运行中轻松替换它们,运行metrical,然后将它们恢复为漂亮的1.9哈希语法。

https://github.com/bkleinen/hash-reverter

更新:显然,ruby_parser将使用3.0.0版进行更新,但大多数工具都依赖于旧版本。