В Capistrano Rails развернута ошибка пассажира

Я развернул приложение Rails на свой локальный IP-адрес. После успешного развертывания, когда я открыл страницу в браузере, я получаю следующую ошибку. Я застрял со следующей проблемой на некоторое время.

It looks like Bundler could not find a gem. Maybe you didn't install all the gems that this application needs. To install your gems, please run:

    bundle install

If that didn't work, then the problem is probably caused by your application being run under a different environment than it's supposed to. Please check the following:

Is this app supposed to be run as the deploy user?
Is this app being run on the correct Ruby interpreter? Below you will see which Ruby interpreter Phusion Passenger attempted to use.
-------- The exception is as follows: -------

Could not find rake-10.4.2 in any of the sources (Bundler::GemNotFound)
  /home/deploy/.gem/ruby/2.2.2/gems/bundler-1.12.5/lib/bundler/spec_set.rb:95:in `block in materialize'
  /home/deploy/.gem/ruby/2.2.2/gems/bundler-1.12.5/lib/bundler/spec_set.rb:88:in `map!'
  ...

Я проверил эту ссылку на стек-поток и попробовал следующее.

я сделал bundle install несколько раз как deploy пользователь.

У меня были установлены 2 версии граблей, 11.1.2 а также 10.4.2, Я очистил 11.1.2, Убедился, что этой версии нет нигде.

Я вижу 2 версии ruby. 1.9.3 и 2.2.2. Не уверен, что это проблема. Я не устанавливал вручную 1.9.3. Но я вижу папки /usr/local/src/ruby-1.9.3-p448 а также /opt/rubies/ruby-1.9.3-p448, Когда я пытался удалить 1.9.3, используя sudo apt-get remove ruby 1.9.3 Я получил следующий результат. В итоге я не удалил его, так как пытался удалить passenger сам.

Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'libghc-hxt-xslt-dev-9.1.1-9b3da' for regex '1.9.3'
Note, selecting 'ruby1.9.3' for regex '1.9.3'
Note, selecting 'libghc-hxt-xslt-prof-9.1.1-9b3da' for regex '1.9.3'
Note, selecting 'libghc-hxt-xslt-dev' instead of 'libghc-hxt-xslt-dev-9.1.1-9b3da'
Note, selecting 'libghc-hxt-xslt-prof' instead of 'libghc-hxt-xslt-prof-9.1.1-9b3da'
Package 'ruby1.9.3' is not installed, so not removed
The following packages will be REMOVED
  libruby2.1 passenger passenger-dev ri ruby ruby-dev ruby-full ruby-rack ruby2.1 ruby2.1-dev

Любая помощь, связанная с этой проблемой, приветствуется.

РЕДАКТИРОВАТЬ: я вижу файлы, связанные с граблями 11.1.2 до сих пор

/home/deploy/myapp/vendor/cache/rake-11.1.2.gem
/home/deploy/myapp/vendor/cache/ruby/2.2.0/specifications/rake-11.1.2.gemspec
/home/deploy/myapp/vendor/cache/ruby/2.2.0/cache/rake-11.1.2.gem
/home/deploy/myapp/vendor/cache/ruby/2.2.0/gems/rake-11.1.2
/home/deploy/myapp/vendor/cache/ruby/2.1.0/specifications/rake-11.1.2.gemspec
/home/deploy/myapp/vendor/cache/ruby/2.1.0/cache/rake-11.1.2.gem
/home/deploy/myapp/vendor/cache/ruby/2.1.0/gems/rake-11.1.2
/home/deploy/.gem/ruby/2.2.2/doc/rake-11.1.2
/home/deploy/.gem/specs/api.rubygems.org%443/quick/Marshal.4.8/rake-11.1.2.gemspec
/var/lib/gems/2.1.0/doc/rake-11.1.2

Может ли это быть проблемой?

Я делюсь подробностями Ruby Environment ниже.

RubyGems Environment:
   RUBYGEMS VERSION: 2.4.5
   RUBY VERSION: 2.2.2 (2015-04-13 patchlevel 95) [x86_64-linux]
   INSTALLATION DIRECTORY: /home/deploy/.gem/ruby/2.2.2
   RUBY EXECUTABLE: /opt/rubies/ruby-2.2.2/bin/ruby
   EXECUTABLE DIRECTORY: /home/deploy/.gem/ruby/2.2.2/bin
   SPEC CACHE DIRECTORY: /home/deploy/.gem/specs
   SYSTEM CONFIGURATION DIRECTORY: /opt/rubies/ruby-2.2.2/etc
   RUBYGEMS PLATFORMS:
     ruby
     x86_64-linux
   GEM PATHS:
     /home/deploy/.gem/ruby/2.2.2
     /opt/rubies/ruby-2.2.2/lib/ruby/gems/2.2.0
   GEM CONFIGURATION:
     :update_sources => true
     :verbose => true
     :backtrace => false
     :bulk_threshold => 1000
   REMOTE SOURCES:
     https://rubygems.org/
   SHELL PATH:
     /home/deploy/.gem/ruby/2.2.2/bin
     /opt/rubies/ruby-2.2.2/lib/ruby/gems/2.2.0/bin
     /opt/rubies/ruby-2.2.2/bin
     /usr/local/sbin
     /usr/local/bin
     /usr/sbin
     /usr/bin
     /sbin
     /bin
     /usr/games
     /usr/local/games

Nginx conf файл /etc/nginx/nginx.conf как следует.

user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;
    gzip_disable "msie6";

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Phusion Passenger config
    ##
    # Uncomment it if you installed passenger or passenger-enterprise
    ##

    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    passenger_ruby /usr/bin/ruby;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

Файл по умолчанию для сайтов Nginx

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    server_name 192.xxx.xxx.xxx;
    passenger_enabled on;
    rails_env    prelive;
    root         /home/deploy/myapp/current/public;

    # redirect server error pages to the static page /50x.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

1 ответ

Решение

Ну, я сделал следующие три шага, и это начало работать. Это из комментариев Зелёный. Похоже, мне пришлось перезагрузить машину или что-то еще, чтобы изменения отражались. Я не уверен.

  1. Проверено /etc/nginx/nginx.conf и убедитесь, что значение для passenger_ruby совпадает с выводом which ruby команда
  2. Проверьте, есть ли версия рейка 10.4.2 выполняя rake --version, Еще прочисти все грабли и установи грабли 10.4.2
  3. bundle install

После этого я перезапустил машину и сделал cap prelive deploy и заявка была подана.

Другие вопросы по тегам