使用Bundler安装Gems ==大问题

时间:2011-02-15 18:23:55

标签: ruby-on-rails rubygems nginx passenger bundler

如果我运行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 个答案:

答案 0 :(得分:24)

在处理基于git的宝石时,这个问题似乎是乘客或捆绑者的错误。 This“解决方案”(我正在写供应商而不是供应商......)让我的乘客现在正在运行:

  1. 捆绑包
  2. 捆绑安装 - 路径供应商/缓存
  3. 我认为http://www.ruby-forum.com/topic/213962是同一个问题,据我所知,它尚未得到解决。可能很快就会修复这个错误......

答案 1 :(得分:1)

你确定你的版本#对于狂欢来说不是问题吗?我在github上看不到这样的标签或版本'0.50.99'。

编辑:

我能想到的另一件事是,由于spree是其他gem依赖项的容器,bundler不喜欢你这样定义需求。

  

git存储库至少应该有   一个文件,位于目录的根目录下   包含宝石,扩展名   .gemspec。这个文件必须包含一个   正如预期的那样有效的宝石规范   通过gem build命令。它绝不是   有任何依赖,除了   git存储库本身的文件   以及Ruby的任何内置功能   或者Rubygems。

这来自manpage for bundler

答案 2 :(得分:1)

这是因为您还必须在nginx启动脚本中解决gem位置(特别是安装了bundler的位置)。

<强>仓/开始

#!/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/

答案 3 :(得分:0)

我在2015年2月遇到了这个问题,并在项目目录中本地安装gem为我修复了它。

 $ bundle install --path vendor/bundle

答案 4 :(得分:0)

最简单解决方法是通过运行

在本地安装所有gem
bundle install --path vendor/bundle

更清洁方式是将您的宝石保存在他们的GEM_HOME中(可能由rvm管理)并从vendor / bundle指向此目录:

一步一步:

  • 在您的项目中创建目录vendor/bundle/ruby/
  • 从命令行创建一个符号链接(用您的ruby版本替换2.1.0):

    ln -s $GEM_HOME 2.1.0
    
  • 确保项目目录中有一个包含该行的文件.bundle/config

    BUNDLE_PATH: vendor/bundle
    

那就是它。您现在可以继续使用&#39;捆绑安装&#39;一如既往,但git gems也会被正确引用。