capistrano-local-precompile 0.0.5 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 644ce2bff333643050f8d23e36e3a4b997beebfb
4
- data.tar.gz: 90e77669bed672c85d0d85a18b1cefd36ac748c2
3
+ metadata.gz: b0ddf2d34a15668372bb7954051441270ba2a07d
4
+ data.tar.gz: 0d92e8a0e178e6d5c3e9a5b13307831a873badab
5
5
  SHA512:
6
- metadata.gz: 327e6ba7b98758a78fa4f32e55d8692477560d66f402848e092c036554eaee345e6659c99ca87982fde7995a1977f802c1f8c1ec082103a4bc9b0da76ef2be3b
7
- data.tar.gz: e245dd1789bff46cbe55f6b46798652157d87d5e4302407068ba49e279cf6312f9e8578988b16531f0ca26728a652df51413b47eeb4c8ff4e798d6170602d79a
6
+ metadata.gz: d219e42f960febfeee330dcb9c61ad1bc5f74abc108cd6bd7ebc90943cc713bc1898f846976395e1ff0543d0e7a4a705c9307f48d3afd4ace0c0135b42642854
7
+ data.tar.gz: 381b75305467c302cc2a7aab3bfaa642406e60d0436eb75c10d2d0a5e4ee4107da2b665d65259a1165f1d48f3e49f7ddacc785dee4c04ba1c5ad8915438fea85
data/README.md CHANGED
@@ -2,40 +2,30 @@
2
2
 
3
3
  If your Rails apps are anything like mine, one of the slowest parts of your deployment is waiting for asset pipeline precompilation. It's sometimes so slow, it's painful. So I went searching for some solutions. [turbo-sprockets](https://github.com/ndbroadbent/turbo-sprockets-rails3) helped, but it's not a silver bullet. This gem isn't a silver bullet either, but it can help. Capistrano Local Precompile takes a different approach. It builds your assets locally and rsync's them to your web server(s).
4
4
 
5
- *Note: This gem is not yet compatible with Capistrano 3.*
6
-
7
5
  ## Usage
8
6
 
9
7
  Add capistrano-local-precompile to your Gemfile:
10
8
 
11
9
  ```ruby
12
10
  group :development do
13
- gem 'capistrano-local-precompile', require: false
11
+ # Capistrano v2 should use '~> 0.0.5'
12
+ # Capistrano v3 should use '~> 1.0.0'
13
+ gem 'capistrano-local-precompile', '~> 1.0.0', require: false
14
14
  end
15
15
  ```
16
16
 
17
- Then add the following line to your `deploy.rb`:
17
+ Then add the following line to your `Capfile`:
18
18
 
19
19
  ```ruby
20
20
  require 'capistrano/local_precompile'
21
21
  ```
22
22
 
23
- If you are using turbo-sprockets, just set it to enabled. Your asset will still compile locally, but they'll use turbosprockets to do so:
24
-
25
- ```ruby
26
- set :turbosprockets_enabled, true
27
- ```
28
-
29
23
  Here's the full set of configurable options:
30
24
 
31
25
  ```ruby
32
- set :precompile_cmd # default: bundle exec rake assets:precompile
26
+ set :precompile_env # default: fetch(:rails_env) || 'production'
33
27
  set :assets_dir # default: "public/assets"
34
- set :rsync_cmd # default: "rsync -av"
35
-
36
- set :turbosprockets_enabled # default: false
37
- set :turbosprockets_backup_dir # default: "public/.assets"
38
- set :cleanexpired_cmd # default: bundle exec rake assets:clean_expired
28
+ set :rsync_cmd # default: "rsync -av --delete"
39
29
  ```
40
30
 
41
31
  ## Acknowledgement
@@ -51,4 +41,4 @@ Pull requests welcome: fork, make a topic branch, commit (squash when possible)
51
41
 
52
42
  ## Copyright
53
43
 
54
- Copyright (c) 2013 Steve Agalloco. See [LICENSE](LICENSE.md) for detail
44
+ Copyright (c) 2017 Steve Agalloco / Tom Caflisch. See [LICENSE](LICENSE.md) for detail
@@ -1,21 +1,20 @@
1
1
  # encoding: utf-8
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'capistrano-local-precompile/version'
5
4
 
6
5
  Gem::Specification.new do |gem|
7
6
  gem.name = 'capistrano-local-precompile'
8
- gem.version = CapistranoLocalPrecompile::VERSION
7
+ gem.version = '1.0.0'
9
8
  gem.homepage = 'https://github.com/spagalloco/capistrano-local-precompile'
10
9
 
11
- gem.author = "Steve Agalloco"
12
- gem.email = 'steve.agalloco@gmail.com'
10
+ gem.author = "Steve Agalloco, Tom Caflisch"
11
+ gem.email = 'steve.agalloco@gmail.com, tomcaflisch@gmail.com'
13
12
  gem.description = 'Local asset-pipeline precompilation for Capstrano'
14
13
  gem.summary = gem.description
15
14
 
16
15
  gem.license = 'MIT'
17
16
 
18
- gem.add_dependency 'capistrano', '~> 2', '< 3'
17
+ gem.add_dependency 'capistrano', '>=3'
19
18
 
20
19
  gem.files = %w(.yardopts LICENSE.md README.md Rakefile capistrano-local-precompile.gemspec)
21
20
  gem.files += Dir.glob("lib/**/*.rb")
@@ -1 +1 @@
1
- require 'capistrano/local_precompile'
1
+
@@ -0,0 +1 @@
1
+ load File.expand_path('../../tasks/local_precompile.cap', __FILE__)
@@ -1,58 +1,59 @@
1
- require 'capistrano'
1
+ require 'capistrano/rails/assets'
2
2
 
3
- module Capistrano
4
- module LocalPrecompile
3
+ namespace :load do
4
+ task :defaults do
5
+ set :precompile_env, fetch(:rails_env) || 'production'
6
+ set :assets_dir, "public/assets"
7
+ set :rsync_cmd, "rsync -av --delete"
5
8
 
6
- def self.load_into(configuration)
7
- configuration.load do
8
-
9
- set(:precompile_env) { rails_env }
10
- set(:precompile_cmd) { "RAILS_ENV=#{precompile_env.to_s.shellescape} #{asset_env} #{rake} assets:precompile" }
11
- set(:cleanexpired_cmd) { "RAILS_ENV=#{rails_env.to_s.shellescape} #{asset_env} #{rake} assets:clean_expired" }
12
- set(:assets_dir) { "public/assets" }
13
- set(:rsync_cmd) { "rsync -av" }
14
-
15
- before "deploy:assets:precompile", "deploy:assets:prepare"
16
- before "deploy:assets:symlink", "deploy:assets:remove_manifest"
9
+ after "bundler:install", "deploy:assets:prepare"
10
+ #before "deploy:assets:symlink", "deploy:assets:remove_manifest"
11
+ after "deploy:assets:prepare", "deploy:assets:cleanup"
12
+ end
13
+ end
17
14
 
18
- after "deploy:assets:precompile", "deploy:assets:cleanup"
15
+ namespace :deploy do
16
+ # Clear existing task so we can replace it rather than "add" to it.
17
+ Rake::Task["deploy:compile_assets"].clear
19
18
 
20
- namespace :deploy do
21
- namespace :assets do
19
+ namespace :assets do
22
20
 
23
- desc "remove manifest file from remote server"
24
- task :remove_manifest do
25
- run "rm -f #{fetch(:assets_dir)}/manifest*.json"
26
- end
21
+ # desc "Remove manifest file from remote server"
22
+ # task :remove_manifest do
23
+ # with rails_env: fetch(:assets_dir) do
24
+ # execute "rm -f #{shared_path}/#{shared_assets_prefix}/manifest*"
25
+ # end
26
+ # end
27
27
 
28
- task :cleanup, :on_no_matching_servers => :continue do
29
- run_locally "rm -rf #{fetch(:assets_dir)}"
30
- end
28
+ desc "Remove all local precompiled assets"
29
+ task :cleanup do
30
+ run_locally do
31
+ with rails_env: fetch(:precompile_env) do
32
+ execute "rm -rf", fetch(:assets_dir)
33
+ end
34
+ end
35
+ end
31
36
 
32
- task :prepare, :on_no_matching_servers => :continue do
33
- run_locally "#{fetch(:precompile_cmd)}"
34
- end
37
+ desc "Actually precompile the assets locally"
38
+ task :prepare do
39
+ run_locally do
40
+ with rails_env: fetch(:precompile_env) do
41
+ execute :bundle, "exec rake assets:clean"
42
+ execute :bundle, "exec rake assets:precompile"
43
+ end
44
+ end
45
+ end
35
46
 
36
- desc "Precompile assets locally and then rsync to app servers"
37
- task :precompile, :only => { :primary => true }, :on_no_matching_servers => :continue do
47
+ desc "Performs rsync to app servers"
48
+ task :precompile do
49
+ on roles(fetch(:assets_role)) do
38
50
 
39
- local_manifest_path = run_locally "ls #{assets_dir}/manifest*"
40
- local_manifest_path.strip!
51
+ local_manifest_path = run_locally "ls #{assets_dir}/manifest*"
52
+ local_manifest_path.strip!
41
53
 
42
- servers = find_servers :roles => assets_role, :except => { :no_release => true }
43
- servers.each do |srvr|
44
- run_locally "#{fetch(:rsync_cmd)} ./#{fetch(:assets_dir)}/ #{user}@#{srvr}:#{release_path}/#{fetch(:assets_dir)}/"
45
- run_locally "#{fetch(:rsync_cmd)} ./#{local_manifest_path} #{user}@#{srvr}:#{release_path}/assets_manifest#{File.extname(local_manifest_path)}"
46
- end
47
- end
48
- end
49
- end
54
+ run_locally "#{fetch(:rsync_cmd)} ./#{fetch(:assets_dir)}/ #{user}@#{server}:#{release_path}/#{fetch(:assets_dir)}/"
55
+ run_locally "#{fetch(:rsync_cmd)} ./#{local_manifest_path} #{user}@#{server}:#{release_path}/assets_manifest#{File.extname(local_manifest_path)}"
50
56
  end
51
57
  end
52
-
53
58
  end
54
59
  end
55
-
56
- if Capistrano::Configuration.instance
57
- Capistrano::LocalPrecompile.load_into(Capistrano::Configuration.instance)
58
- end
@@ -30,7 +30,7 @@ describe Capistrano::LocalPrecompile, "configuration" do
30
30
  end
31
31
 
32
32
  it "defines rsync_cmd" do
33
- expect(@configuration.fetch(:rsync_cmd)).to eq('rsync -av')
33
+ expect(@configuration.fetch(:rsync_cmd)).to eq('rsync -av --delete')
34
34
  end
35
35
 
36
36
  it "performs deploy:assets:prepare before deploy:assets:precompile" do
@@ -47,4 +47,9 @@ describe Capistrano::LocalPrecompile, "configuration" do
47
47
  expect(@configuration).to callback('deploy:assets:cleanup').
48
48
  after('deploy:assets:precompile')
49
49
  end
50
+
51
+ it "performs deploy:assets:remove_manifest before deploy:assets:symlink" do
52
+ expect(@configuration).to callback('deploy:assets:remove_manifest').
53
+ before('deploy:assets:symlink')
54
+ end
50
55
  end
@@ -31,8 +31,11 @@ describe Capistrano::LocalPrecompile, "integration" do
31
31
 
32
32
  describe 'remove manifest task' do
33
33
  it 'invokes the precompile command' do
34
+ allow(@configuration).to receive(:shared_path).and_return('/tmp/shared')
35
+ allow(@configuration).to receive(:shared_assets_prefix).and_return('assets')
36
+
34
37
  expect(@configuration).to receive(:run).
35
- with('rm -f public/assets/manifest*.json').once
38
+ with('rm -f /tmp/shared/assets/manifest*').once
36
39
 
37
40
  @configuration.find_and_execute_task('deploy:assets:remove_manifest')
38
41
  end
metadata CHANGED
@@ -1,49 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-local-precompile
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
- - Steve Agalloco
7
+ - Steve Agalloco, Tom Caflisch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-08 00:00:00.000000000 Z
11
+ date: 2017-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '2'
20
- - - "<"
17
+ - - '>='
21
18
  - !ruby/object:Gem::Version
22
19
  version: '3'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: '2'
30
- - - "<"
24
+ - - '>='
31
25
  - !ruby/object:Gem::Version
32
26
  version: '3'
33
27
  description: Local asset-pipeline precompilation for Capstrano
34
- email: steve.agalloco@gmail.com
28
+ email: steve.agalloco@gmail.com, tomcaflisch@gmail.com
35
29
  executables: []
36
30
  extensions: []
37
31
  extra_rdoc_files: []
38
32
  files:
39
- - ".yardopts"
33
+ - .yardopts
40
34
  - LICENSE.md
41
35
  - README.md
42
36
  - Rakefile
43
37
  - capistrano-local-precompile.gemspec
44
- - lib/capistrano-local-precompile.rb
45
- - lib/capistrano-local-precompile/version.rb
38
+ - lib/capistrano/capistrano-local-precompile/tasks.rb
46
39
  - lib/capistrano/local_precompile.rb
40
+ - lib/capistrano-local-precompile.rb
47
41
  - spec/configuration_spec.rb
48
42
  - spec/integration_spec.rb
49
43
  - spec/spec_helper.rb
@@ -57,17 +51,17 @@ require_paths:
57
51
  - lib
58
52
  required_ruby_version: !ruby/object:Gem::Requirement
59
53
  requirements:
60
- - - ">="
54
+ - - '>='
61
55
  - !ruby/object:Gem::Version
62
56
  version: '0'
63
57
  required_rubygems_version: !ruby/object:Gem::Requirement
64
58
  requirements:
65
- - - ">="
59
+ - - '>='
66
60
  - !ruby/object:Gem::Version
67
61
  version: '0'
68
62
  requirements: []
69
63
  rubyforge_project:
70
- rubygems_version: 2.2.2
64
+ rubygems_version: 2.0.14.1
71
65
  signing_key:
72
66
  specification_version: 4
73
67
  summary: Local asset-pipeline precompilation for Capstrano
@@ -75,4 +69,3 @@ test_files:
75
69
  - spec/configuration_spec.rb
76
70
  - spec/integration_spec.rb
77
71
  - spec/spec_helper.rb
78
- has_rdoc:
@@ -1,3 +0,0 @@
1
- module CapistranoLocalPrecompile
2
- VERSION = "0.0.5"
3
- end