......我认为无论如何都会发生什么。
我正在使用Capistrano将Rails应用程序部署到EC2。部署总是成功,但即使我刚刚将JS / CSS更改推送到Git,资产也不会第一次编译。当我保留5个版本时,我不得不重复部署,直到最终删除所有旧版本。我将它减少到3,然后减少到1.现在,我在连续2次部署后看到了新版本的JS和CSS。
在生产中,application.js
文件夹中还有多个application.css
和shared/public/assets
文件,包括最新的编译版本。除非我运行rake assets:clobber
,否则旧版本似乎无法清除。 rake assets:clean
无法删除它们。我认为只要清单指向正确的文件,就可以拥有多个版本的资产。
我真的很喜欢在有新变化时预编译的资产。任何帮助将不胜感激。
的Gemfile
gem 'rails', '4.2.3'
gem 'mysql2'
gem 'haml-rails', '~> 0.9'
gem 'sass-rails', '~> 5.0'
gem 'autoprefixer-rails'
gem 'bootstrap-sass', '~> 3.3.5'
gem 'font-awesome-rails'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'therubyracer', platforms: :ruby
gem 'jquery-rails'
gem 'underscore-rails'
gem 'ejs'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
group :development do
gem 'capistrano', '~> 3.4.0'
gem 'capistrano-rails', '~> 1.1'
gem 'capistrano-rbenv', '~> 2.0'
gem 'capistrano-passenger'
end
group :development, :test do
gem 'byebug'
gem 'web-console', '~> 2.0'
gem 'spring'
end
Capfile
require 'capistrano/setup'
require 'capistrano/deploy'
require 'capistrano/rbenv'
require 'capistrano/rails'
require 'capistrano/passenger'
deploy.rb
set :keep_releases, 1
namespace :deploy do
after :restart, :cleanup, :clear_cache do
on roles(:web), in: :groups, limit: 3, wait: 10 do
...
end
end
end
Capistrano输出
INFO [b2b76675] Running RBENV_ROOT=~/.rbenv RBENV_VERSION=2.2.2 ~/.rbenv/bin/rbenv exec bundle exec rake assets:precompile as ec2-user@xx.xxx.xxx.xxx
DEBUG [b2b76675] Command: cd /var/www/my-app/releases/20150918071822 && ( RBENV_ROOT=~/.rbenv RBENV_VERSION=2.2.2 RAILS_ENV=production RBENV_ROOT=~/.rbenv RBENV_VERSION=2.2.2 ~/.rbenv/bin/rbenv exec bundle exec rake assets:precompile )
INFO [b2b76675] Finished in 2.014 seconds with exit status 0 (successful).
答案 0 :(得分:1)
确保您正在运行最新的链轮和链轮导轨。如果tmp/cache
中有linked_dirs
,请将其删除。
如果修复它并且您想要恢复共享缓存,则可以尝试编写Capistrano任务,该任务在部署开始时删除tmp/cache/assets
的内容。