私は、配備のためにbundlerとcapistranoを使用するRuby on Rails 3.2アプリを持っています。私のサーバは、rvmとruby 1.9.2のDebian Squeezeです。私はcapstrano(http://beginrescueend.com/integration/capistrano/)のrvmのものを読んで、set :rvm_ruby_string, '[email protected]_gemset'
で宝石セットを設定することができます。Capistrano:Bundlerはrvm gemsetを使用していません
しかし、配備中、bundlerはすべての宝石を/var/www/my_app/shared/bundle
に書き込みます。私は@記号でrvm_ruby_stringを定義すると、バンドラーはgemsetを使用すると思った。
展開からの出力は、私はRVMから[email protected]_gemset
gemsetを使用するように--path /var/www/...
を変更することができます
* executing "cd /var/www/my_app/releases/20120216145728 && bundle install --gemfile /var/www/my_app/releases/20120216145728/Gemfile --path /var/www/my_app/shared/bundle --deployment --quiet --without development test"
を言いますか?
多分私は展開のためにいくつかの環境を使用しているので(ステージング、制作...)。だからここに私のdeploy.rbは
# RVM bootstrap
$:.unshift(File.expand_path('./lib', ENV['rvm_path']))
require 'capistrano/ext/multistage'
require 'bundler/capistrano'
require 'rvm/capistrano'
set :rvm_bin_path, "/usr/local/rvm/bin"
set :rvm_type, :system
set :stages, %w(production staging)
set :default_stage, "staging"
set :application, "my_app"
set :repository, "gitosi[email protected]:my_app.git"
set :scm, :git
set :user, "my_deploy_user"
set :use_sudo, false
set :ssh_options, { :forward_agent => true }
default_run_options[:pty] = true
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
され、設定/展開/ staging.rb
set :rails_env, "staging"
set :rvm_ruby_string, '[email protected]_gemset'
set :deploy_to, "/var/www/my_app"
role :web, "stage.mydomain.de" # Your HTTP server, Apache/etc
role :app, "stage.mydomain.de" # This may be the same as your `Web` server
role :db, "stage.mydomain.de", :primary => true # This is where Rails migrations will run
にたぶん誰かが私を助けることができます。
私はあなたが正しい以下の答えをマークしていることがわかります。これであなたの解決策は何でしたか?あなたはrvm gemsetではなく共有/バンドルを使うだけですか? – Donato