Установка Gems с помощью Bundler == Большая проблема - PullRequest
9 голосов
/ 15 февраля 2011

Если я запускаю bundle install, все проходит. Я перезагружаю nginx, и когда я захожу на сайт, я вижу ошибку пассажира с этим:

git://github.com/spree/spree.git (at master) is not checked out. Please run `bundle install` (Bundler::GitError)

Мой гемфайл:

source 'http://rubygems.org'

gem 'rails', '3.0.3'
gem 'spree', :git => 'git://github.com/spree/spree.git' 
gem 'haml'
gem 'ruby-debug'
gem 'sqlite3', :require => 'sqlite3'
gem 'ckeditor', '3.4.2.pre'
gem "aged_revolt", :require => "aged_revolt", :path => "aged_revolt"
gem "spree_easy_contact", '1.0.2', :path => "#{File.expand_path(__FILE__)}/../vendor/gems/spree_easy_contact-1.0.2"
gem "honeypot-captcha"

Когда я запускаю bundle show spree:

/home/shadyfront/.rvm/gems/ruby-1.8.7-p330@revolting_gems/bundler/gems/spree-44e4771f3a2a

Есть идеи, как / почему это происходит и как я могу это преодолеть?

Это мой nginx.conf:

env               GEM_HOME=/home/shadyfront/.rvm/gems/ruby-1.8.7-p330@revolting_gems;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    access_log  /home/shadyfront/logs/user/access_revolting_age.log  combined;
    error_log   /home/shadyfront/logs/user/error_revolting_age.log   crit;

    include         mime.types;
    passenger_root  /home/shadyfront/webapps/revolting_age/gems/gems/passenger-2.2.15;
    passenger_ruby  /home/shadyfront/webapps/revolting_age/bin/ruby;
    sendfile        on;

    passenger_max_instances_per_app  1;
    rails_spawn_method               conservative;
    passenger_max_pool_size 2;

    server {
        listen             56943;
        passenger_enabled  on;
        root               /home/shadyfront/webapps/revolting_age/releases/20110215175319/public;
        server_name        localhost;
    }
}

Ответы [ 5 ]

24 голосов
/ 11 марта 2011

Эта проблема, по-видимому, является ошибкой в ​​пассажире или связке при работе с самоцветами на основе git. Это"решение" (я пишу поставщика, а не продавца ...) заставило моего пассажира запустить его прямо сейчас:

  1. комплектация
  2. комплектация --path vendor / cache

Я думаю http://www.ruby -forum.com / topic / 213962 - это та же проблема, и, насколько я знаю, она не решена.Пусть эта ошибка будет исправлена ​​в ближайшее время ...

1 голос
/ 06 марта 2015

Обходной путь самый простой - установить все драгоценные камни локально, запустив

bundle install --path vendor/bundle

Способ очистки состоит в том, чтобы хранить ваши драгоценные камни в их GEM_HOME (который может, например, управляться rvm) и указывать на этот каталог из vendor / bundle:

Шаг за шагом:

  • В вашем проекте создайте каталог vendor/bundle/ruby/
  • Из командной строки создайте символическую ссылку (замените 2.1.0 на вашу версию ruby):

    ln -s $GEM_HOME 2.1.0
    
  • Убедитесь, что у вас есть файл .bundle/config в каталоге вашего проекта, который содержит строку

    BUNDLE_PATH: vendor/bundle
    

Вот и все. Теперь вы можете продолжать использовать 'bundle install' как всегда, но на git gems будут ссылаться правильно.

1 голос
/ 11 марта 2011

Это потому, что вы также должны указать, где находится самоцвет (в частности, где установлен bundler) в стартовом скрипте nginx.

бен / старт

#!/bin/bash

TMPDIR=/home/shadyfront/webapps/truejersey/tmp GEM_HOME=/home/shadyfront/.rvm/gems/ruby-1.8.7-p330@true /home/shadyfront/webapps/truejersey/nginx/sbin/nginx -p /home/shadyfront/webapps/truejersey/nginx/
1 голос
/ 15 февраля 2011

Вы уверены, что это не проблема с вашей версией # для веселья?На github нет такой метки или версии 0.50.99, которую я вижу.

Редактировать:

Единственное, о чем я могу думать, это то, что spree является контейнером другихВ зависимости от gem, bundler не нравится, когда вы определяете требование таким образом.

Хранилище git ДОЛЖНО иметь по крайней мере один файл в корне каталога, содержащего gem, с расширением .gemspec.Этот файл ДОЛЖЕН содержать действительную спецификацию gem, как и ожидалось командой gem build.Он НЕ ДОЛЖЕН иметь никаких зависимостей, кроме файлов в самом git-репозитории и любых встроенных функций Ruby или Rubygems.

Это происходит из справочной страницы для компоновщика .

0 голосов
/ 11 февраля 2015

Я столкнулся с этой проблемой в феврале 2015 года, и установка gem локально в каталоге проекта исправила ее для меня.

 $ bundle install --path vendor/bundle
...