Ich benutze Capistrano 3 mit einer neu erstellten Rails 4 App. Mein Einsatz funktioniert, aber wenn ich bundle exec rails console
auf dem Produktionsserver laufen lasse, erhalte ich eine Warnung von Rails:Capistrano 3-Bereitstellung für Rails 4 binstubs Konflikt?
Sieht aus wie ./bin/rails Ihre App ist ein Stummel, der von Bündler generiert wurde.
In Rails 4 enthält das Verzeichnis/Verzeichnis der Anwendung ausführbare Dateien, die wie jeder andere Quellcode versioniert sind, und keine Stubs, die bei Bedarf generiert werden.
der Tat die binstubs während des Einsatzes erzeugt die binstubs im Repository überschreiben:
Die ursprüngliche 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'
Die binstub in der Produktion:
$ 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')
Was muss sich ändern um die Konfiguration von Capistrano mit Rails 4 kompatibel zu machen?
# 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}
# ...
Alles andere verwendet die Standardeinstellungen.
Diese genaue Lösung ist als eine Lösung für dieses Problem hier https://github.com/capistrano/bundler/issues/45 – s01ipsist
Ahh gut zu wissen, danke für den Link! –