Capistrano: Bundler nicht rvm gemset
Habe ich einen Ruby on Rails 3.2-app mit bundler und capistrano für das deployment. Mein server ist ein Debian Squeeze mit rvm und ruby 1.9.2. Ich lese die rvm Sachen für capistrano (http://beginrescueend.com/integration/capistrano/) wo man einstellen kann das gemset von set :rvm_ruby_string, '1.9.2@my_gemset'
.
Aber bei der Implementierung, bundler schreibt jeder Edelstein zu /var/www/my_app/shared/bundle
. Ich dachte, wenn ich definieren rvm_ruby_string mit dem @ - Zeichen, bundler verwenden würde, das gemset.
Den Ausgang aus der Bereitstellung, sagt
* 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"
Wo ich ändern kann, die --path /var/www/...
zu verwenden, die 1.9.2@my_gemset
gemset von rvm?
Vielleicht sein, denn ich bin mit mehreren Umgebungen für die Bereitstellung (staging, Produktion...). So, hier ist mein bereitstellen.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, "[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
Und in der config/deploy/Inszenierung.rb
set :rails_env, "staging"
set :rvm_ruby_string, '1.9.2@my_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
Vielleicht kann mir jemand helfen.
- Ich sehe, dass Sie markiert die Antwort unten korrigieren. Was war Ihre Lösung mit dieser? Hast du nur shared/bundle eher als die rvm gemset?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie beide mit bundler-und rvm-integration. Rvm sicherzustellen, dass es die richtige ruby (bequem für die Verwaltung Rubine), bundler trennen Sie alle Edelsteine in die shared/bundle-Verzeichnis. Dies ist bundlers Standardeinstellung für die Produktion. Ich glaube, dass dies ein guter Weg, um dies einzurichten, auch da funktioniert es mit Passagier aus der box, trennt Edelsteine von jeder Anwendung, und rvm Umgang mit den Rubinen.
Wenn Sie wirklich wollen, zu verwenden RVM für gem Trennung, Sie können die besten start bei dieser Beitrag von Darcy (dies gilt für PKW). Wie Sie sehen können, gibt es einige Anstrengungen daran beteiligt, dass die Arbeit, aber es ist möglich.
capistrano-bundler 1.1.2 können Sie entfernen Sie die --Pfad Flagge aus der bundler Argumente und installieren Sie die Edelsteine zu einem angegebenen gemset.
Es ist das, was meine config sieht aus wie am Ende: