ruby-on-rails – Capistrano:Bundler不使用rvm gemset
发布时间:2020-12-17 04:04:42 所属栏目:百科 来源:网络整理
导读:我有一个 Ruby on Rails 3.2应用程序,使用bundler和capistrano进行部署.我的服务器是带有rvm和ruby 1.9.2的Debian Squeeze.我读了capistrano(http://beginrescueend.com/integration/capistrano/)的rvm东西,你可以在其中设置gemset:rvm_ruby_string,’1.9.2
我有一个
Ruby on Rails 3.2应用程序,使用bundler和capistrano进行部署.我的服务器是带有rvm和ruby 1.9.2的Debian Squeeze.我读了capistrano(http://beginrescueend.com/integration/capistrano/)的rvm东西,你可以在其中设置gemset:rvm_ruby_string,’1.9.2 @ my_gemset’.
但在部署期间,bundler会将每个gem写入/ var / www / my_app / shared / bundle.我想如果我用@符号定义rvm_ruby_string,bundler会使用gemset. 部署的输出说 * 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" 我可以在哪里更改–path / var / www / …以使用rvm中的1.9.2@my_gemset gemset? 也许吧,因为我正在使用几个环境进行部署(登台,制作……).所以这是我的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,"gitosis@mydomain.org: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 在config / deploy / staging.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 也许有人可以帮助我. 解决方法
你们都在使用bundler和rvm集成. Rvm将确保它使用正确的ruby(便于管理rubies),bundler会将所有gem分成shared / bundle目录.这是生产的捆绑包默认设置.我相信这是一个很好的方式来设置它,也因为它适用于开箱即用的乘客,从每个应用程序中分离宝石,并有rvm处理ruby.
如果你真的想使用RVM进行宝石分离,你最好从达西开始this blogpost(这适用于乘客).正如您所看到的,在完成这项工作时需要付出一些努力,但这是可能的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |