2011-10-02 11 views
20

私はcapistrano、bundler、rvmを使ってVPSにレールアプリを導入しています。ここ は私deploy.rbの一部であるRVM Gemset - 生産中のBundler&Capistrano

$:.unshift(File.expand_path('./lib', ENV['rvm_path'])) 
require "rvm/capistrano"  
require "bundler/capistrano"    # Load RVM's capistrano plugin. 

set :rvm_type, :system 
set :rvm_ruby_string, '[email protected]_name' 

私はRVMのgemsetが作成されたことに気づいたサーバにログインすると、しかし、すべての宝石がインストールされた

rvm --create use [email protected]_name 

私.rvmrc /共有/bundle/ruby/1.9.1/gems - gemsetにはありません(/ usr/local/rvm/gemset)

私は開発にRVMを使用しています。ベストプラクティスは何ですか? gemsetにgemをインストールするようにbundlerに指示する方法はありますか?

宝石セットが必要なのですか? (バンドラーがすでに宝石を隔離しているようだ)、何かが足りない?

ご理解ください。

ありがとうございました

答えて

17

私はRVMを開発および生産に使用しています。しかし、開発中にgemsetsを使って私のレールプロジェクト間で宝石を分けている間、私はRVMを使って自分の生産VPSにルビーをインストールし、Bundlerに私の宝石のバージョンを扱わせます。

require "bundler/capistrano"経由のバンドル統合を使用すると、自動的にバンドラの設定が行われます。この背後にあるコードはBundlers Github pageにあります。あなたが見ることができるように

bundle install --gemfile Gemfile --path shared/bundle --deployment --quiet --without development test 

は、--deployment--pathのフラグが指定されている、shared/bundleディレクトリでアプリケーションを使用して宝石をバンドルするバンドラーを伝え、のみを使用:基本的な設定は、そのバンドルは、このコマンドを実行していますあなたのGemfile.lockで指定されたバージョン(つまり、開発中のバージョン)。バンドルディレクトリはデプロイメント間で共有されるため、アプリケーションごとにRVMジェムセットを使用するのと同じくらい簡単です。

this tutorialにこの設定に関する追加情報があります。あなたがまだ別の宝石セットに宝石を入れたいのであれば、私はさらに読むためにthis tutorial from Darcy Laycockをお勧めしたいと思います。

+1

ありがとうございました!私はバンドラーが私のプロジェクトのそれぞれのために宝石を扱うようにしています。 – Jazmin

+0

開発中のRVMでは+1、プロダクションではバンドラ私はこの方法を使って1つのホスト上で複数のルビーアプリを実行しますが、まだ問題はありません。 – Soup

関連する問題