2012-11-13 81 views
5

我想部署我的第一個應用程序在服務器上與Capistrano,我有點失去了管理gemsets和紅寶石版本bundler/capistrano沒有安裝正確的ruby版本的寶石

這些是我的(服務器和工作站)版本:

  • 的Rails 3.2.8
  • RVM 17年1月16日
  • 寶石1.8.24
  • 捆紮機1.2.1
  • 皮克寶石0.14.1

我的寶石是:

Gemsets爲紅寶石1.9.3-P194(在/usr/local/rvm/gems/ruby-1.9.3-p194找到)

  • (默認)
  • 全球
  • => rail3dev20120606

我設置默認寶石有:

rvm use [email protected] --default --passenger 

當我運行一個:

cap bundle:install 

與成功的任務結束,但是當我做:

gem list 

有許多丟失的寶石但他們存在於我的Gemfile。 當我去檢查我的寶石/var/www/opf/shared/bundle/ruby​​/我找到一個文件夾,名爲1.9.1和/var/www/opf/shared/bundle/ruby/1.9 .1 /寶石/我可以喜歡我所有需要的寶石(在Gemfile中指定)。我確定ruby版本存在問題,但我該如何解決這個問題?

此刻,如果我做任何rake命令,我得到了一個紅寶石崩潰[問題]段錯誤,因爲它試圖訪問數據庫,並使用postgresql_adapter:

/var/www/opf/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213: [BUG] Segmentation fault 

我想盡可能多的寶石缺少必須有一些寶石依賴沒有得到驗證,也許寶石使用不兼容的紅寶石版本1.9.1,但它期望1.9.3。

我認爲這個問題是圍繞管理ruby版本和寶石。我當然在做一些混搭gemset和我的capistrano部署。

我很想好經驗和信息。 有人可以告訴我如何處理這個在服務器上?什麼是最佳實踐?

我如何更新我的ruby版本?與Capistrano deploy.rb?手動?有沒有rvm?我看到剛剛發佈的新版本的Ruby 1.9.3-p327。

我應該使用寶石或沒有?那麼我的deploy.rb中的rvm_ruby_string如何呢?拼寫是否正確,或者我應該刪除p194部分?我應該刪除:rvm_ruby_string?收下 ?使用.rvmrc文件?

我真的失去了與某種幫助將受到歡迎。

這是在任何情況下我的配置/ deploy.rb:

require 'bundler/capistrano' 
require File.join(File.dirname(__FILE__), 'deploy') + '/capistrano_database' 

set :rvm_type, :system 

set :rvm_ruby_string, '[email protected]' 
require 'rvm/capistrano' 

set :application, 'opf' 
set :deploy_to, '/var/www/opf' 
set :rails_env, 'production' 
set :user, 'the_user' 
set :use_sudo, false 

set :group_writable, false 
set :scm, :git 
set :repository, '[email protected]:user/opf.git' 
set :branch, 'master' 

default_run_options[:pty] = true 

set :deploy_via, :remote_cache 

server '192.168.5.200', :web, :app, :db, :primary => true 

# If you are using Passenger mod_rails uncomment this: 
namespace :deploy do 
    task :start do ; end 
    task :stop do ; end 
    task :restart, :roles => :app, :except => { :no_release => true } do 
    run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}" 
    end 
end 

感謝

回答

4

寶石安裝任何幫助,但他們安裝了捆綁的情況下:

bundle exec gem list 

這是因爲捆綁存儲它在.bundle/config的設置,並沒有安裝共享的寶石,而不是所有的寶石都安裝在每個項目單獨目錄ectory,把它當作一個就地寶石。

+1

感謝您的回答。任何想法爲什麼我得到這個錯誤,然後:/var/www/opf/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:[BUG]分割故障。以及爲什麼該文件夾被稱爲ruby/1.9.1。是使用1.9.1代替1.9.3的紅寶石嗎? – Douglas

+0

1.9.1是所有1.9.x紅寶石的兼容級別,對於「BUG」 - 這是一個新問題 – mpapis

+0

對不起,但我不明白你的第一個答案。我如何使用我的寶石?我不希望寶石保存在我的應用程序文件夾中。由於gemset在那裏管理寶石,所以這並沒有做出反應。 – Douglas