代码之家  ›  专栏  ›  技术社区  ›  Cameron

Gemfile中Ruby版本的悲观Ruby运算符导致错误

  •  0
  • Cameron  · 技术社区  · 6 年前

    在我们的Gemfile中有以下内容: ruby '~> 2.5.0'

    所以我们至少要执行 2.5.0 已安装但低于 2.6.0

    我们已经安装了Ruby 2.5.3p105 在我们的服务器上运行此应用程序。。。所以我们在Gemfile所要求的版本内。

    Your Ruby version is 2.5.3, but your Gemfile specified ~> 2.5.0

    >= 2.5.0 && < 2.6.0

    如果我们在Gemfile中注释这一行,那么它可以工作。。。?

    0 回复  |  直到 6 年前
        1
  •  3
  •   Cameron    6 年前

    我们不完全确定问题是什么,或者实际的解决方法是什么。。。

    但基本上是在尝试了以下几点之后: ruby '>= 2.5.0', '< 2.6' 正如在原始问题的注释中所建议的,我们遇到了这个错误:

    /usr/lib/ruby/vendor_ruby/bundler/ruby_dsl.rb:4:in '[]': (Bundler::Dsl::DSLError)
    [!] There was an error parsing 'Gemfile': no implicit conversion of Symbol into Integer. Bundler cannot continue.
    # from /srv/portal/releases/2019-02-21-15-55-45/Gemfile:1 
    # ------------------------------------------- 
    > ruby('>= 2.5.0', '< 2.6') 
    # source 'https://rubygems.org' 
    # -------------------------------------------
    

    这让我们觉得实际安装的Ruby有问题。。。当在本地尝试时,这是很好的,我们也在不同的服务器上尝试过,它也没有问题。

    所以我们卸载了Ruby,删除了所有Gems,然后在运行的Ubuntu dist上做了一个完整的包更新,然后重新安装bundler和所有Gems,它工作了。。。因此,似乎是某个包的问题导致Ruby行为怪异,不理解如何正确使用Gemfile中的Ruby方法导致了上述问题。

    希望如果其他人遇到类似的问题,这将有助于。。。

        2
  •  0
  •   Peter Camilleri    6 年前

    gem“rails”、“~>4.0.0”#与gem“rails”、“>=4.0.0”、“<4.1.0”相同

    也许这种明确的形式能提供更好的结果?

    有问题的指南指定它是为bundler 1.12编写的