我有一个应用程序在nginx后面的精简版1.2.11上运行。我试图在开发机器上使用bundle update
将我的应用程序更新到最新版本的宝石上,委托git,然后运行cap deploy
。然而,薄是给我下面的错误:Rails 3打包程序更新
/usr/local/lib/ruby/gems/1.9.1/gems/bundler-1.0.14/lib/bundler/runtime.rb:31:in `block in setup': You have already activated rack 1.3.0, but your Gemfile requires rack 1.2.3. Consider using bundle exec. (Gem::LoadError)
在我有以下的宝石安装系统级服务器:
bundler (1.0.14)
daemons (1.1.3)
eventmachine (0.12.10)
rack (1.3.0)
rake (0.9.2)
thin (1.2.11)
我的Gemfile我aplication:
source 'http://rubygems.org'
gem 'rails', '3.0.7'
gem 'sqlite3'
gem 'capistrano'
gem 'thin'
gem 'RedCloth'
gem 'will_paginate', '3.0.pre2'
gem 'jquery-rails'
我相信瘦身需要机架1.3,而我的Gemfile中的某些东西需要机架1.2.3。我是否以错误的方式管理我的宝石?管理部署和正确的宝石控制的正确方法是什么?
我发现使用bundle exec thin start
的作品,但我更喜欢一个解决方案,让我使用/etc/init.d/thin start
。
什么是一个伟大的简单答案干杯! – 2011-07-03 10:05:03
这是一个有趣的阅读,但我不明白它是如何非常有用的。任何理智的瘦部署都需要使用/etc/init.d/thin start。除非有办法做到这一点,否则我们不应该使用Thin或Bundler。另外,使一个特定的应用程序服务器成为一个应用程序的依赖关系对我来说似乎很糟糕。我错了吗? – bioneuralnet 2011-11-27 05:28:39
@bioneuralnet这就是你为什么我的回答没有帮助吗?问题是你不能从同一个解释器同时启动2个Rails应用程序 - 可能是因为有一些单身人士正在使用,你需要加载一些特定版本的库等,而Ruby无法应付它(尝试它在C#上的Java)中,捆绑器只解决了依赖版本管理的问题。这就是为什么你需要启动(以某种方式)为每个应用程序分开服务器。但是你选择哪个服务器是你的问题,也许还有其他服务器可以产生单独的Ruby进程来启动你的应用程序? – MBO 2011-11-28 15:03:32