簡體   English   中英

Gemfile.lock,Bundler和Capistrano部署

[英]Gemfile.lock, Bundler and Deploying with Capistrano

我正在嘗試部署,並且我不希望Gemfile.lock在版本控制中。 但是,將其刪除時,出現以下錯誤。

* executing "cd /var/www/vhosts/my-site/releases/20120628162217 && bundle install --       gemfile /var/www/vhosts/mysite/releases/20120628162217/Gemfile --path  /var/www/vhosts/my-site/shared/bundle --deployment --quiet --without development test cucumber  analytics"
    servers: ["staging-beta.my-site.com"]
[staging-beta.my-sitehealth.com] executing command
** [out :: staging-beta.my-site.com] The --deployment flag requires a Gemfile.lock.     Please make sure you have checked your Gemfile.lock into version control before deploying.
    command finished in 332ms

這是我的deploy.rb文件:

require 'thinking_sphinx/deploy/capistrano'

set :rvm_ruby_string, '1.9.3'

# Ignore the .git directory when creating a release
set :copy_exclude, ".git*"

set :stages, %w(production staging rails_ec2_west_staging vagrant analytics highgroove ec2_highgroove stage_analytics ec2_staging highgroove_staging ec2_chef ec2_sphinx_chef solr_staging ec2_sphinx_prod_chef)
set :default_stage, "staging"

set :bundle_without, [:development, :test, :cucumber, :analytics]
require 'bundler/capistrano'
set :custom_symlinks, {}

require 'capistrano/ext/multistage'

if ARGV.first == 'ec2_staging'
  require 'rvm/capistrano'
  # for dual deploys on ec2 staging
  set :application, "my-site3"
else
  set :application, "my-site"
end

set :use_sudo, false
set :user, "www-data"
set :group, "www-data"

ssh_options[:forward_agent] = true

set :branch, $1 if `git branch` =~ /\* (\S+)\s/m

set :scm, :git
set :repository, "git@github.com:my-company/my-site3.git"
set :deploy_to, "/var/www/vhosts/#{application}"
set :deploy_via, :remote_cache
set :deploy_env, 'production'

# If you are using Passenger mod_rails uncomment this:
# if you're still using the script/reapear helper you will need
# these http://github.com/rails/irs_process_scripts

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

   task :seed, :roles => :db do
     rake = fetch(:rake, "rake")
     rails_env = fetch(:rails_env, "production")

     run "cd #{current_path} && #{rake} RAILS_ENV=#{rails_env} db:seed"
   end

end

namespace :assets do
  task :precompile do
    run "cd #{current_path} && #{rake} RAILS_ENV=#{rails_env} my-site-web:assets:precompile"
  end
end

task :uname do
  run "uname -a"
end

after "deploy:update", "deploy:cleanup"
after "deploy:update", "assets:precompile"

require './config/boot'
#require 'airbrake/capistrano'

包括gemfile.lock是最佳實踐。 從Bundlers有理頁面: http ://gembundler.com/rationale.html

這很重要:Gemfile.lock使您的應用程序既是您自己的代碼又是第三方代碼的單個包,它在您最后一次確定一切正常時運行。 在Gemfile中指定您依賴的第三方代碼的確切版本不會提供相同的保證,因為gem通常會為其依賴項聲明一系列版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM