我正在执行以下脚本:
gem install rdoc --no-document
gem install bundle
bundle
输出:
+ gem install rdoc --no-document
Successfully installed rdoc-6.1.1
1 gem installed
+ gem install bundle
Successfully installed bundle-0.0.1
Parsing documentation for bundle-0.0.1
Done installing documentation for bundle after 2 seconds
1 gem installed
1 gem installed
+ bundle install
/usr/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)
from /usr/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path'
from /srv/myuser/.gem/ruby/2.5.0/bin/bundle:23:in `<main>'
我已经将/srv/myuser/.gem/ruby/2.5.0/bin
添加到了自己的路径中,以便能够安装gems。
gem env
显示
RubyGems Environment:
- RUBYGEMS VERSION: 2.7.7
- RUBY VERSION: 2.5.1 (2018-03-29 patchlevel 57) [x86_64-linux]
- INSTALLATION DIRECTORY: /usr/lib/ruby/gems/2.5.0
- USER INSTALLATION DIRECTORY: /srv/myuser/.gem/ruby/2.5.0
- RUBY EXECUTABLE: /usr/bin/ruby
- EXECUTABLE DIRECTORY: /usr/bin
- SPEC CACHE DIRECTORY: /srv/myuser/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /usr/lib/ruby/gems/2.5.0
- /srv/myuser/.gem/ruby/2.5.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- "gem" => "--user-install"
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /usr/local/sbin
- /usr/local/bin
- /usr/bin
gem list
显示已安装的gem。
我在执行时也可以找到捆绑软件:
ls -ltrah /srv/myuser/.gem/ruby/2.5.0/bin
我也尝试安装捆绑器,但这也无济于事。 我在做什么错了?
gem which bundle
什么也没有显示。gem spec bundle
没有显示。
更新:我尝试在运行捆绑软件之前安装捆绑软件,但在以下时间出现相同的问题:
gem list bundle
显示
bundle (0.0.1)
bundler (2.0.1)
答案 0 :(得分:61)
Bundler版本2引入了一项新功能,可以自动使用项目#include <iostream>
#include <map>
int64_t exchange(std::map& <int64_t, int64_t>, int64_t n){
if(n<12)
return n;
if(dp.count(n))
return dp[n];
return dp[n] = exchange(n/2)+exchange(n/3)+exchange(n/4);
}
int main(){
std::map <int64_t, int64_t> dp;
while(1){
int64_t n;
std::cin>>n;
std::cout<<exchange(dp, n)<<std::endl;
}
}
中指定的Bundler版本。因此,如果您现有的Gemfile.lock
在底部有这样的行
Gemfile.lock
Bundler将尝试使用Bundler版本<2.0。由于您仅安装了Bundler 2.0.1(并且Rubygems> = 2.7.0),因此失败,并显示此无用的错误消息。
要解决此问题,您可以
BUNDLED WITH
1.17.3
中删除行,并从现在开始在各处使用bundler 2.x,或者Gemfile.lock
安装捆绑软件1.x版本,以使用gem install bundler -v '< 2.0'
指定的适当版本。有关此问题的更多信息,请访问Bundler blog。
答案 1 :(得分:35)
根据帖子中提到的描述,在运行以下提到的命令之前:
bundle install
在脚本中,您需要运行以下命令:
gem install bundler
因此,要执行的命令顺序为:
gem install bundler
bundle install
如果不起作用,请更新bundler命令:
gem install bundler -v '1.17.3'
以下提到的链接给出了捆绑器2.0中功能中断的原因:
https://bundler.io/blog/2019/01/04/an-update-on-the-bundler-2-release.html
答案 2 :(得分:8)
gem install bundler -v '< 2.0'
答案 3 :(得分:5)
我什至无法bundle -v
。这样可以解决问题:
gem update --system
从此处获取信息(类似问题):find_spec_for_exe': can't find gem bundler (>= 0.a) (Gem::GemNotFoundException)
红宝石+宝石+捆扎机之间版本可能不匹配
答案 4 :(得分:2)
我也遇到了同样的问题。该问题是由于RubyGems无法在系统上为bundler gem找到可执行文件包所致。
要修复此问题,请先运行
trait FooTrait
{
public $classVariables;
public function classAttributes()
{
$callingClass = get_class($this);
$rawAttributes= $this->$classVariables = get_class_vars($callingClass);
var_dump($rawAttributes);
var_dump($callingClass);
return $rawAttributes;
}
public function info()
{
var_dump($this->classVariables);
}
// manipulate $this -> classVaribales to do generic database operations
}
class Mine
{
use FooTrait;
protected $attrib1;
protected $attrib2;
protected $attrib3;
}
$needed = new Mine;
$needed->classAttributes();
$needed->info();
如果本地没有安装bundler gem,请运行
gem install bundler
仅此而已
我希望这会有所帮助
答案 5 :(得分:2)
您必须通过运行以下命令来安装RubyGems寻找的Bundler的确切版本:
$ gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)"
答案 6 :(得分:1)
我最近有同样的问题。 就我而言,我在捆绑器上安装了与Gemfile.lock中记录的版本不同的版本。请检查
答案 7 :(得分:0)
我今天也遇到了同样的错误。我以前在系统中安装的捆绑软件版本为:1.16.6
按照How to Upgrade to Bundler 2上的官方捆绑程序文档中的说明进行操作,以下两个步骤可以解决问题:
gem install bundler
(帮助您获取最新版本的捆绑软件,截止到今天是2.0.2)bundle update --bundler
答案 8 :(得分:0)
将mac os升级到Catalina后,我看到了travis捆绑包的类似错误消息。
Traceback (most recent call last):
2: from /usr/local/bin/travis:22:in `<main>'
1: from /usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/rubygems.rb:263:in `bin_path'
/usr/local/Cellar/ruby/2.6.5/lib/ruby/2.6.0/rubygems.rb:284:in `find_spec_for_exe': can't find gem travis (>= 0.a) with executable travis (Gem::GemNotFoundException)
要解决此问题,我从源代码重新安装了travis。
brew remove travis;
brew install -s travis
答案 9 :(得分:0)
这可能有助于解决问题
bundle update --bundler
答案 10 :(得分:0)
是的,这有效:
gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)"
来自:https://bundler.io/blog/2019/05/14/solutions-for-cant-find-gem-bundler-with-executable-bundle.html