Używam Capistrano 3 z nowo wygenerowaną aplikacją Rails 4. Moja rozmieszczenie działa, ale gdy uruchamiam bundle exec rails console
na serwer produkcyjny, otrzymuję ostrzeżenie od szyn:Wdrożenie Capistrano 3 dla konfliktu binarnego Rails 4?
wygląda ./bin/rails swojej aplikacji jest zalążek, który został wygenerowany przez Bundler.
W Railsach 4 bin/katalog Twojej aplikacji zawiera pliki wykonywalne, które są wersjonowane jak każdy inny kod źródłowy, a nie kody pośrednie generowane na żądanie.
Rzeczywiście binstubs generowane podczas wdrażania nadpisać binstubs w repozytorium:
Oryginalny binstub:
$ 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 w produkcji:
$ 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')
Co musi się zmienić w celu dostosowania konfiguracji Capistrano do Rails 4?
# 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}
# ...
Cała reszta korzysta z ustawień domyślnych.
To dokładne rozwiązanie jest zaimplementowane jako poprawka dla tego problemu tutaj https://github.com/capistrano/bundler/issues/45 – s01ipsist
Ahh dobrze wiedzieć, dzięki za link! –