ruby-on-rails – Passenger RVM错误:无法加载此类文件 – bund
我有一个Debian服务器,当我尝试运行Passenger并导航到我的应用程序的根目录时:
错误: 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 哪个生成文件.rvmrc: 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身份运行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |