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

即使gem安装正常,Bundler也无法找到gem

  •  3
  • Hakanai  · 技术社区  · 7 年前

    对于此GEM文件:

    source 'https://rubygems.org'
    
    ruby '2.3.1' # equivalent version to what jruby supports
    
    gem 'jrubyfx'
    

    Bundler无法找到宝石,即使 it is clearly available :

    $ bundle install
    Fetching gem metadata from https://api.rubygems.org/..........
    Could not find gem 'jrubyfx' in any of the gem sources listed in your Gemfile.
    

    如果我让gem自己做这项工作, 可以发现它很好:

    $ gem install jrubyfx
    Successfully installed jrubyfx-1.2.0-java
    1 gem installed
    

    所以现在我甚至在我的系统上有它,但尽管它甚至在本地存在,Bundler仍然找不到它。

    环境:

    $ bundle --version
    Bundler version 1.16.0.pre.3
    $ gem --version
    2.6.8
    $ rbenv version
    jruby-9.1.8.0 (set by /Users/trejkaz/Documents/prototype/.ruby-version)
    $ ruby --version
    jruby 9.1.8.0 (2.3.1) 2017-03-06 90fc7ab Java HotSpot(TM) 64-Bit Server VM 25.151-b12 on 1.8.0_151-b12 +jit [darwin-x86_64]
    $ jenv version
    1.8 (set by /Users/trejkaz/Documents/prototype/.java-version)
    $ java -version
    java version "1.8.0_151"
    Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
    Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
    

    我已经验证了gem和bundler肯定都是用JRuby运行的——它们都需要很长时间才能启动,目前我只安装了一个JRuby(最新的一个是用自制的ruby构建的)。

    迄今为止已尝试:

    1 回复  |  直到 7 年前
        1
  •  2
  •   mabe02    7 年前

    我看了一下 Gemfile 一些 github projects 使用相同的宝石。

    尝试添加 engine engine_version

    # Gemfile
    
    ruby '2.3.1', engine: 'jruby', engine_version: '9.1.8.0'
    source 'https://rubygems.org'
    
    gem 'jrubyfx', '~> 1.2'
    

    根据 bundler documentation

    二者都 :engine :engine_version 省略,这意味着该应用程序与特定的Ruby ABI兼容 但引擎无关紧要。使用:engine时,:engine\u版本 还必须指定。将平台命令与ruby一起使用 标志,您可以看到GEM文件中指定了什么ruby指令。