name - RVM Gemset-Bundler & Capistrano en producción
rvm use gemset (1)
Yo uso RVM en el desarrollo y la producción también. Sin embargo, mientras uso gemsets en desarrollo para separar gemas entre mis proyectos de rieles, solo uso RVM para instalar rubíes en mi VPS de producción y dejar que Bundler maneje las versiones de mis gemas.
El uso de la integración de bundler a través de require "bundler/capistrano"
configura automáticamente algunas cosas para bundler. Puedes ver el código detrás de esto en la página de Bundlers Github . La configuración básica es para que el paquete ejecute este comando:
bundle install --gemfile Gemfile --path shared/bundle --deployment --quiet --without development test
Como puede ver, se --path
banderas --deployment
y --path
, que le --path
--deployment
--path
sus gemas con su aplicación en el directorio shared/bundle
, y que solo use las versiones especificadas en su Gemfile.lock (es decir, las versiones que están trabajando en desarrollo). Dado que el directorio del paquete se comparte entre implementaciones, me parece más fácil que usar gemsets RVM para cada aplicación.
Puede encontrar información adicional sobre esta configuración en este tutorial . Si aún desea colocar gemas en conjuntos de gemas separados, le recomendaría este tutorial de Darcy Laycock para leer más.
Estoy desplegando una aplicación de rieles a un VPS con capistrano, bundler y rvm. Aquí es parte de mi deploy.rb
$:.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, ''1.9.2@gemset_name''
mi .rvmrc
rvm --create use 1.9.2@gemset_name
Cuando inicié sesión en el servidor noté que se creó el gemset rvm, sin embargo, todas las gemas se instalaron en /shared/bundle/ruby/1.9.1/gems --no en el gemset (/ usr / local / rvm / gemset)
Uso RVM en el desarrollo y creo que es genial, pero cuando es el momento de implementarlo en producción. ¿Cuáles son las mejores prácticas? ¿Hay alguna manera de decirle a Bundler que instale las gemas en el gemset?
¿Incluso necesito un gemset en absoluto? (Parece que Bundler ya está aislando gemsets), ¿Me estoy perdiendo algo?
Por favor, ayúdame a entender!
Muchas gracias