2011-02-15 62 views
9

如果我运行bundle install,一切都会通过。我重启nginx的,当我访问该网站我看到这个乘客错误:用Bundler安装Gems ==大问题

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

我的Gemfile:

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/[email protected]_gems/bundler/gems/spree-44e4771f3a2a 

任何想法如何/为什么会发生这种情况,以及我如何能够克服这一点?

这是我的nginx.conf:

env    GEM_HOME=/home/shadyfront/.rvm/gems/[email protected]_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; 
    } 
} 
+0

哪个版本的乘客?你的nginx配置是什么样的?你有没有告诉它使用'revolting_gems'gemset? – idlefingers 2011-02-15 18:29:09

+0

是的。我会在上面更新。 – Trip 2011-02-15 18:53:11

回答

1

那是因为你还必须解决在创业板的位置(在安装捆绑具体在哪里)在你的nginx启动脚本为好。

斌/启动

#!/bin/bash 

TMPDIR=/home/shadyfront/webapps/truejersey/tmp GEM_HOME=/home/shadyfront/.rvm/gems/[email protected] /home/shadyfront/webapps/truejersey/nginx/sbin/nginx -p /home/shadyfront/webapps/truejersey/nginx/ 
1

你确定这不是你的版本#用于大礼包一个问题吗?没有我在github上看到的标签或版本'0.50.99'。

编辑:

我能想到的唯一的另一件事是,由于大礼包是其他宝石依赖的容器,捆绑不喜欢你定义的要求这样。

甲git仓库应具有至少 一个文件中,在包含宝石的目录 的根,与延伸 .gemspec。这个文件必须包含一个 有效的宝石规格,正如预期的 通过gem build命令。它不能 有任何相关性,比 在Git仓库本身 和Ruby 或RubyGems的任何内置功能中的文件等。

这来自manpage for bundler

+0

我知道。这么奇怪。如果我把最新版本是0.40.2,在`bundle install`之后它会返回:在git://github.com/spree/spree.git中找不到gem'spree(= 0.40.2,runtime)' (在主人)。 来源包含'狂欢'在:0.50.99 如果我做后者的版本,它通过捆绑包,但返回原来的错误。 – Trip 2011-02-15 18:47:12

23

在处理基于git的宝石时,此问题似乎是乘客或打包程序中的错误。 This“解决方案”(我写的供应商,而不是厂商......)得到了我的乘客现在正在运行:

  1. 捆束包装
  2. 捆绑安装--path供应商/缓存

我认为http://www.ruby-forum.com/topic/213962是相同的问题,据我所知,它并没有解决。可这个bug尽快修复...

0

我在2015年2月面对这个问题,并在项目目录本地安装宝石我对其进行修复。

$ bundle install --path vendor/bundle 
0

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

bundle install --path vendor/bundle 

清洁方式在本地安装所有的宝石是保持你的宝石在他们GEM_HOME(这可能例如,通过RVM管理)并指向供应商/软件包中的此目录:

分步:

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

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

    BUNDLE_PATH: vendor/bundle 
    

就是这样。你现在可以像往常一样继续使用'bundle install',而且git gems会被正确引用。