如果我运行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;
}
}
答案 0 :(得分:24)
在处理基于git的宝石时,这个问题似乎是乘客或捆绑者的错误。 This“解决方案”(我正在写供应商而不是供应商......)让我的乘客现在正在运行:
我认为http://www.ruby-forum.com/topic/213962是同一个问题,据我所知,它尚未得到解决。可能很快就会修复这个错误......
答案 1 :(得分:1)
你确定你的版本#对于狂欢来说不是问题吗?我在github上看不到这样的标签或版本'0.50.99'。
编辑:
我能想到的另一件事是,由于spree是其他gem依赖项的容器,bundler不喜欢你这样定义需求。
git存储库至少应该有 一个文件,位于目录的根目录下 包含宝石,扩展名 .gemspec。这个文件必须包含一个 正如预期的那样有效的宝石规范 通过gem build命令。它绝不是 有任何依赖,除了 git存储库本身的文件 以及Ruby的任何内置功能 或者Rubygems。
答案 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)
最简单解决方法是通过运行
在本地安装所有gembundle 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也会被正确引用。