Bundler说捆绑是可以的,但不会运行代码

时间:2015-06-25 20:30:06

标签: ruby bundler

当我运行捆绑检查时,它说:

ubuntu@ip:/opt/bluecopper/current$ /opt/default-ruby/bundle check
fatal: Not a git repository (or any of the parent directories): .git
The Gemfile's dependencies are satisfied

当我列出宝石时,我得到:

ubuntu@ip:/opt/bluecopper/current$ /opt/default-ruby/bundle list
fatal: Not a git repository (or any of the parent directories): .git
Gems included by the bundle:
  * aws-sdk-v1 (1.64.0)
  * bluecopper (0.1.0)
  * bundler (1.10.5)
  * dotenv (2.0.2)
  * json (1.8.3)
  * mini_portile (0.6.2)
  * multi_json (1.11.1)
  * nokogiri (1.6.6.2)
  * rollbar (1.5.3)
  * thor (0.19.1)

但是当我真的尝试exec时会说:

ubuntu@ip:/opt/bluecopper/current$ /opt/default-ruby/ruby -S bundle exec bluecopper start -c app-config.yml 
fatal: Not a git repository (or any of the parent directories): .git
Could not find json-1.8.3 in any of the sources
Run `bundle install` to install missing gems.

知道如何解决这个问题吗?这毫无意义。

2 个答案:

答案 0 :(得分:2)

在您使用/opt/default-ruby/bundle的前两个命令中,但在最后一个/opt/default-ruby/ruby -S bundle中。

我会尝试使用/opt/default-ruby/bundle exec bluecopper start -c app-config.yml。它可能与ruby -S更改$ PATH。

有关

答案 1 :(得分:1)

bluecopper可执行文件有一个shebang:

#!/usr/bin/env ruby

当使用bundle exec调用时,命令使用系统ruby而不是预期的/opt/default-ruby/ruby,修复方法是将路径更改为前置/opt/default-ruby,以便{{1}会选择正确的。