14

Yeni oluşturulan Rails 4 uygulamasıyla Capistrano 3 kullanıyorum. Benim dağıtım çalışıyor ama üretim sunucusunda bundle exec rails console çalıştırdığınızda, Rails bir uyarı olsun:Capistrano 3 dağıtım?

uygulamanızın ./bin/rails benziyor Bundler tarafından oluşturulan bir taslaktır.

Raylar 4'te, uygulamanızın bin/dizini, istek üzerine oluşturulan dizeler yerine, diğer kaynak kodları gibi sürümlendirilmiş yürütülebilir dosyaları içerir.

orijinal binstub: Üretimde

$ cat bin/rails 

#!/usr/bin/env ruby 
begin 
    load File.expand_path("../spring", __FILE__) 
rescue LoadError 
end 
APP_PATH = File.expand_path('../../config/application', __FILE__) 
require_relative '../config/boot' 
require 'rails/commands' 

binstub:

$ cat bin/rails 

#!/usr/bin/env ruby 
# 
# This file was generated by Bundler. 
# 
# The application 'rails' is installed as part of a gem, and 
# this file is here to facilitate running it. 
# 

require 'pathname' 
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../../releases/20140930173754/Gemfile", 
    Pathname.new(__FILE__).realpath) 

require 'rubygems' 
require 'bundler/setup' 

load Gem.bin_path('railties', 'rails') 

Değişmesi gereken

Nitekim dağıtım sırasında üretilen binstubs depoda binstubs üzerine Capistrano konfigürasyonunu Rails 4 ile uyumlu hale getirmek için?

# Gemfile 
group :development do 
    gem 'capistrano', '~> 3.1' 
    gem 'capistrano-rbenv', '~> 2.0' 
    gem 'capistrano-bundler', '~> 1.1.2' 
    gem 'capistrano-rails', '~> 1.1' 
end 

# config/deploy.rb 
lock '3.2.1' 
# ... 
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system} 
set :rbenv_map_bins, %w{rake gem bundle ruby rails} 
# ... 

Diğer her şey varsayılan ayarları kullanıyor.

cevap

29

./bin dizininin Rails 4 sürümünden beri, 'dan bin'u kaldırarak Capistrano'nun dağıtımlarda bağlanmasını önlememiz gerekir. Artık bundler'ın sürüm kontrollü binstub'ların üzerine yazmasını önlemek için,numaralı satırı ekleyebiliriz; bu, capistrano-bundler'u paket yüklemeyi çalıştırırken --binstubs seçeneğini ayarlamayı engeller.

Bu yardımcı olur umarım!

+3

Bu tam çözüm bu konu için bir düzeltme olarak uygulanmaktadır burada https://github.com/capistrano/bundler/issues/45 – s01ipsist

+0

Ahh bilmek için teşekkürler, bağlantı için teşekkürler! –

İlgili konular