1

デプロイしようとしていますが、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'
4

1 に答える 1

5

gemfile.lock を含めることをお勧めします。Bundlers の合理的なページから: http://gembundler.com/rationale.html

これは重要です。Gemfile.lock により、アプリケーションは、独自のコードと、最後に実行したサードパーティ コードの両方の単一のパッケージになり、すべてが確実に機能したことがわかります。Gemfile で依存するサードパーティ コードの正確なバージョンを指定しても、同じ保証は得られません。通常、gem は依存関係のバージョンの範囲を宣言するためです。

于 2012-06-28T17:38:38.183 に答える