错误:
cannot load such file -- bundler/setup
环境
deployment@currienet:/$which ruby /home/deployment/.rvm/rubies/ruby-1.9.3-p194/bin/ruby deployment@currienet:/$ruby --version ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux] deployment@currienet:/$which rails /home/deployment/.rvm/gems/ruby-1.9.3-p194/bin/rails deployment@currienet:/$rails --version Rails 3.2.8 deployment@currienet:/$which bundle /home/deployment/.rvm/gems/ruby-1.9.3-p194/bin/bundle deployment@currienet:/$gem list bundle bundler (1.2.1) deployment@currienet:/$gem list passenger passenger (3.0.17) deployment@currienet:/$which rvm /home/deployment/.rvm/bin/rvm deployment@currienet:/$rvm --version rvm 1.16.6 (master) by Wayne E. Seguin <wayneeseguin@gmail.com>,Michal Papis <mpapis@gmail.com> [https://rvm.io/]
Apache的passenger.load文件
LoadModule passenger_module /home/deployment/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.17/ext/apache2/mod_passenger.so PassengerRoot /home/deployment/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.17 PassengerRuby /usr/local/bin/ruby
Apache的httpd.conf
<VirtualHost *:80> ServerName http://currienet # !!! Be sure to point DocumentRoot to 'public'! DocumentRoot /var/www/currienet/marketplace/current/public <Directory /var/www/currienet/marketplace/current/public > # This relaxes Apache security settings. Allow from all Options -MultiViews </Directory> </VirtualHost>
束
deployment@currienet:/var/www/currienet/marketplace/current$bundle show Gems included by the bundle: * actionmailer (3.2.8) * actionpack (3.2.8) * activemodel (3.2.8) * activerecord (3.2.8) * activeresource (3.2.8) * activesupport (3.2.8) * arel (3.0.2) * bcrypt-ruby (3.0.1) * builder (3.0.0) * bundler (1.2.1) * cocaine (0.2.1) * coffee-rails (3.2.2) * coffee-script (2.2.0) * coffee-script-source (1.3.3) * daemon_controller (1.0.0) * devise (2.1.2) * erubis (2.7.0) * execjs (1.4.0) * fastthread (1.0.7) * haml (3.1.7) * haml-rails (0.3.4) * hike (1.2.1) * i18n (0.6.1) * journey (1.0.4) * jquery-rails (2.1.1) * json (1.7.5) * mail (2.4.4) * mime-types (1.19) * multi_json (1.3.6) * orm_adapter (0.4.0) * paperclip (3.1.2) * passenger (3.0.17) * pg (0.14.0) * polyglot (0.3.3) * rack (1.4.1) * rack-cache (1.2) * rack-ssl (1.3.2) * rack-test (0.6.1) * rails (3.2.8) * railties (3.2.8) * rake (0.9.2.2) * rdoc (3.12) * sass (3.2.1) * sass-rails (3.2.5) * sprockets (2.1.3) * thor (0.16.0) * tilt (1.3.3) * treetop (1.4.10) * tzinfo (0.3.33) * uglifier (1.2.7) * warden (1.2.1) * will_paginate (3.0.3)
帐号
我在服务器上有两个帐户:root和deployment.
我的app和rvm是在部署下安装的,但Apache安装在root下(能够绑定到端口80)通过运行ps -fe来判断进程列表apache正在调用乘客并在root下运行:
root 16159 16155 0 02:08 ? 00:00:00 PassengerWatchdog root 16165 16159 0 02:08 ? 00:00:00 PassengerHelperAgent root 16167 16165 0 02:08 ? 00:00:00 Passenger spawn server nobody 16172 16159 0 02:08 ? 00:00:00 PassengerLoggingAgent www-data 16179 16155 0 02:08 ? 00:00:00 /usr/sbin/apache2 -k start www-data 16180 16155 0 02:08 ? 00:00:00 /usr/sbin/apache2 -k start www-data 16181 16155 0 02:08 ? 00:00:00 /usr/sbin/apache2 -k start www-data 16182 16155 0 02:08 ? 00:00:00 /usr/sbin/apache2 -k start www-data 16183 16155 0 02:08 ? 00:00:00 /usr/sbin/apache2 -k start
root帐户无权访问根路径中的rails或bundle.
.rvmrc&配置/ setup_load_paths.rb
我已尝试按照The Path to Better RVM & Passenger Integration Blog和Using RVM rubies with Passenger 上的说明操作:
使用以下命令在我的应用程序的根目录中创建一个.rvmrc文件:
rvm use 1.9.3 --rvmrc --create
if [[ -d "${rvm_path:-$HOME/.rvm}/environments" && -s "${rvm_path:-$HOME/.rvm}/environments/$environment_id" ]] then \. "${rvm_path:-$HOME/.rvm}/environments/$environment_id" [[ -s "${rvm_path:-$HOME/.rvm}/hooks/after_use" ]] && \. "${rvm_path:-$HOME/.rvm}/hooks/after_use" || true if [[ $- == *i* ]] # check for interactive shells then echo "Using: $(tput setaf 2)$GEM_HOME$(tput sgr0)" # show the user the ruby and gemset they are using in green else echo "Using: $GEM_HOME" # don't use colors in non-interactive shells fi else # If the environment file has not yet been created,use the RVM CLI to select. rvm --create use "$environment_id" || { echo "Failed to create RVM environment '${environment_id}'." return 1 } fi # If you use bundler,this might be useful to you: if [[ -s Gemfile ]] && { ! builtin command -v bundle >/dev/null || builtin command -v bundle | GREP_OPTIONS= \grep $rvm_path/bin/bundle >/dev/null } then printf "%b" "The rubygem 'bundler' is not installed. Installing it Now.\n" gem install bundler fi if [[ -s Gemfile ]] && builtin command -v bundle >/dev/null then bundle install | GREP_OPTIONS= \grep -vE '^Using|Your bundle is complete' fi
并将以下内容添加到config / setup_load_paths.rb
if ENV['MY_RUBY_HOME'] && ENV['MY_RUBY_HOME'].include?('rvm') begin rvm_path = File.dirname(File.dirname(ENV['MY_RUBY_HOME'])) rvm_lib_path = File.join(rvm_path,'lib') $LOAD_PATH.unshift rvm_lib_path require 'rvm' RVM.use_from_path! File.dirname(File.dirname(__FILE__)) rescue LoadError # RVM is unavailable at this point. raise "RVM ruby lib is currently unavailable." end end # Select the correct item for which you use below. # If you're not using bundler,remove it completely. # If we're using a Bundler 1.0 beta ENV['BUNDLE_GEMFILE'] = File.expand_path('../Gemfile',File.dirname(__FILE__)) require 'bundler/setup'
并通过运行启动Apache
sudo /etc/init.d/apache2 restart
我仍然得到同样的错误.
无益
我发现以下相关问题无益(但可能对其他人有用):
RVM and Passenger: No such file to load – bundler – 解决方案是Apache配置文件中旧虚拟主机的剩余配置.
解决方法
deployment@currienet:/$which ruby /home/deployment/.rvm/rubies/ruby-1.9.3-p194/bin/ruby
和
PassengerRuby /usr/local/bin/ruby
这不是你想要的. rvm可以选择设置解释器以用作乘客的默认解释器. https://rvm.io/integration/passenger/
另外(看到你上次编辑)也许你需要在系统范围内安装rvm,因为乘客将以root身份运行.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。