我有一個應用程序在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