无法加载这样的文件—— bundler/setup (LoadError)

我正在使用 Ruby 2.0设置 Rails 4应用程序,但是我得到了“ Web 应用程序无法启动”,并且得到了以下信息:

cannot load such file -- bundler/setup (LoadError)
/usr/local/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:53:in `require'
/usr/local/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:53:in `require'
/usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/lib/phusion_passenger/loader_shared_helpers.rb:212:in `run_load_path_setup_code'
/usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:96:in `preload_app'
/usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:150:in `<module:App>'
/usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:29:in `<module:PhusionPassenger>'
/usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:28:in `<main>'

我的 apache2.conf 是:

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/buildout/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19
PassengerDefaultRuby /usr/local/bin/ruby

bundle -v为:

Bundler version 1.3.5

ruby -v为:

ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]

gem env为:

RubyGems Environment:
- RUBYGEMS VERSION: 2.1.5
- RUBY VERSION: 2.0.0 (2013-06-27 patchlevel 247) [x86_64-linux]
- INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
- RUBY EXECUTABLE: /usr/local/bin/ruby
- EXECUTABLE DIRECTORY: /usr/lib/ruby/gems/1.8/bin
- SPEC CACHE DIRECTORY: /root/.gem/specs
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /usr/lib/ruby/gems/1.8
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /root/.gems/bin
- /usr/lib/ruby/gems/1.8/bin/
- /usr/local/bin
- /usr/bin
- /bin
- /usr/bin/X11
- /usr/games
- /usr/sbin
- /sbin

echo $GEM_PATH为:

/usr/lib/ruby/gems/1.8:/usr/lib/ruby/gems/1.8

GEM_PATH不应该是 /usr/lib/ruby/gems/2.0吗?

在 apache2.conf 中的虚拟主机中,我添加了:

SetEnv GEM_HOME /usr/lib/ruby/gems/1.8

现在起作用了。

这是解决问题的正确方法吗?

274626 次浏览

可能在你安装2.0之前你的系统上已经安装了一个 Ruby env?这可能有一个现有的 GEM _ PATH,该目录通向/1.8目录,版本2.0的安装只是保留了这个目录。

那么,您可能遇到的问题是乘客/Apache 在/2.0目录中查找,而实际上 gems 在/1.8目录中。您显式地告诉 Apache 使用/1.8目录,因此解决这个问题是有意义的。

SetEnv GEM_HOME /usr/lib/ruby/gems/1.8

您还可以尝试使用 Ruby 版本管理器来处理多个 Ruby envs。

我在谷歌上找到了一些东西:

您很可能安装了不止一个 Ruby。

如果你正在使用 RVM,你可能需要运行:

rvm use system

设置要使用的 Ruby 版本。

参见 http://rvm.io/rubies/default

ruby -v

将告诉您当前使用的版本。

在我的示例中,在安装 customer 之后附加到 apache 配置文件的代码行如下:

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-.0.24/buildout/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.24
PassengerDefaultRuby /usr/bin/ruby1.8

但是这个应用程序需要 Ruby2.0.0,所以花了我一些时间,但是最终,在下面的 Apache 虚拟主机配置文件中使用‘ PassengerRuby’指定了一个不同的路径之后,错误得到了解决:

...
VirtualHost *:80>
ServerName www.yourhost.com


**PassengerRuby /home/user/.rvm/gems/ruby-2.0.0-p247**
# !!! Be sure to point DocumentRoot to 'public'!
DocumentRoot /somewhere/public
<Directory /somewhere/public>
# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews
</Directory>
</VirtualHost...

我得到了这个错误,在一个新的 Rails 应用程序与捆绑包正确安装。在 Gemfile 评论 Spring gem 解决了这个问题。

我犯了几乎完全相同的错误,并且能够通过运行完全修复它:

gem install bundler

有可能你的捆绑包安装已损坏或丢失——这就是发生在我的情况。请注意,如果上述方法失败,您可以尝试:

sudo gem install bundler

但通常不用 sudo 也能做到。

我有这个是因为我的 vendor/bundle里有不好的东西。与 Apache 无关,只是在本地开发环境中。

为了解决这个问题,我删除了 vendor\bundle,并且在我的 .bundle/config中删除了对它的引用,这样它就不会被重复使用。

然后,我重新绑定(然后安装到 GEM_HOME而不是 vendor/bundle和问题消失了。

你可以试着跑:

bundle exec rake rails:update:bin

正如@Dinesh 在 Rails5中提到的:

rails app:update:bin

注意: 我的托管公司是 Site5.com,我有一个托管 VPS。

将 GEM _ HOME 和 GEM _ PATH 的 env 变量添加到。我的 public _ html 目录中的 htaccess 文件(Rails 应用程序中的 public 目录的别名)

以前不需要它们,所以东道方一定发生了什么变化。在接触 restart.txt 文件以重新启动乘客服务器之后,出现了这个错误。

返回文章页面 GEM _ PATH:

回声 $GEM _ PATH

作者:

(咒语)

 RubyGems Environment:
- RUBYGEMS VERSION: 2.0.14
- RUBY VERSION: 2.0.0 (2013-11-22 patchlevel 353) [x86_64-linux]
- INSTALLATION DIRECTORY: /home/username/ruby/gems
- RUBY EXECUTABLE: /usr/local/ruby20/bin/ruby
- EXECUTABLE DIRECTORY: /home/username/ruby/gems/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /home/username/ruby/gems
- /usr/local/ruby2.0/lib64/ruby/gems/
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- "gem" => "--remote --gen-rdoc --run-tests"
**- "gemhome" => "/home/username/ruby/gems"**
- "gempath" => ["/home/username/ruby/gems", "/usr/local/ruby2.0/lib64/ruby/gems/"]
- "rdoc" => "--inline-source --line-numbers"
- REMOTE SOURCES:
- https://rubygems.org/

更新了. htaccess 文件,其中包含以下代码行:

SetEnv GEM_HOME /usr/local/ruby2.0/lib64/ruby/gems/
SetEnv GEM_PATH /home/username/ruby/gems:/usr/local/ruby20/lib64/ruby/gems/:/home/username/ruby/gems:/usr/

对我来说,问题在于如何将 RVM Ruby 与 Passy 联系起来。所以我需要将 RVM 红宝石包装器集成到乘客配置文件中。

我用命令查找 rvm Ruby 包装器路径:

passenger-config --ruby-command

我从结果中选择路径,并在 nginx/passenger.conf中输入乘客配置:

passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /usr/local/rvm/gems/ruby-2.3.1/wrappers/ruby;

我遇到了同样的问题,但是我认为这是由于 spring缓存了一些 gem 和配置。我通过运行 gem pristine --all修复了它。

这样可以从 gem 缓存中的文件中将已安装的 gem 恢复到原始状态。

或者你可以试试你的宝石

gem pristine your_gem_name

对我来说,这是在生产环境中发生的。

rm /vendor/bundle

那么 bundle install --deployment

解决了这个问题。

其他可能的情况: 在服务器环境中定义了多个用户

passenger-config --ruby-command

将给您必要的命令来指定您的 nginx/sites-enabled/relevant_application文件与您的用例,例如:

passenger-config was invoked through the following Ruby interpreter:
Command: /home/other_user/.rbenv/versions/2.4.5/bin/ruby
Version: ruby 2.4.5p335 (2018-10-18 revision 65137) [x86_64-linux]
To use in Apache: PassengerRuby /home/other_user/.rbenv/versions/2.4.5/bin/ruby
To use in Nginx : passenger_ruby /home/other_user/.rbenv/versions/2.4.5/bin/ruby
To use with Standalone: /home/other_user/.rbenv/versions/2.4.5/bin/ruby /usr/bin/passenger start

我也遇到过同样的问题,我试了所有的答案,但都没有成功。

我复制的步骤:

  1. rvm instal 2.1.10
  2. rvm gemset create my_gemset
  3. rvm use 2.1.10@my_gemset
  4. bundle install

然而 bundle install安装了 Rails,但我还是得到了 cannot load such file -- bundler/setup (LoadError)

最后运行 gem install rails -v 4.2修复了它

Bundler 版本可能会导致这个问题。

请安装其他版本号的捆绑包。

比如说,

Gem install bundler-v1.0.10

我已经通过创建测试轨道项目和安装所有 gems 来解决这个问题,然后我用测试替换了当前的 Gemfile.lock,所有的工作都很好。

我认为这个问题从 bundler版本的托管,所以请确保托管捆绑包是相同的版本与您的项目。

在我的情况下,这是权限的问题:

 sudo chmod -R +777 <your_folder_path>

使用 phusion 旅客的红宝石版本与 Rails 应用程序的版本不同。

<IfModule mod_passenger.c>
PassengerRoot /usr/local/rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/passenger-6.0.2
PassengerDefaultRuby /usr/local/rbenv/versions/2.5.3/bin/ruby
</IfModule>

确保 httpd 配置的版本与 Rails 应用程序相同。

在花了很多时间之后,尝试跟随这些答案实际上在下面的代码之后,它为我工作。在做之前,但要确定,没有问题,在更新:)

gem update --system