Passenger RVM Error: не може да зареди такъв пакет/настройка на файлове

Имам 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 <[email protected]>, Michal Papis <[email protected]> [https://rvm.io/]

Файлът за зареждане на Apache

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

httpd.conf на Apache

<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.

Моето приложение и 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

Основният акаунт няма достъп до релси или пакет в основния път.

.rvmrc & config/setup_load_paths.rb

Опитах се да следвам инструкциите в The Path към Better RVM & Passenger Integration Blog и Използване на RVM рубини с 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 и Passenger: Няма такъв файл за зареждане - пакетиране - резолюцията беше остатъчни конфигурации от стар виртуален хост в конфигурационните файлове на Apache.


person Dr.Seuss    schedule 30.09.2012    source източник


Отговори (1)


Ти имаш

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.

person rewritten    schedule 30.09.2012
comment
Благодаря! Това беше. Не знам как това мина през известието. - person Dr.Seuss; 30.09.2012