caboose-cms 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/caboose/version.rb +1 -1
- data/lib/tasks/caboose.rake +205 -98
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7fa62eedcbe6c49f9413de0c7122c1d031529c8
|
4
|
+
data.tar.gz: 35c06e4da3cbed369eb5520afd5ed6cd04f86cfb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6afad2c94f730d41418042307f71c9d083934feb73cf34779f546c9c8374ebad2912cc2cf9a2b3c9512835b5b7cb75ac3291e8c1b03611a243bbac4bfcb491b9
|
7
|
+
data.tar.gz: 92493e93f3cca39b2dd45e27a8939969aafd347703fa0e57f7c97740b5d056abfcd5a608701aeb5fc44f8186d1999cb7427e88b25d533cfa8ba533fe495a3b87
|
data/lib/caboose/version.rb
CHANGED
data/lib/tasks/caboose.rake
CHANGED
@@ -528,109 +528,164 @@ end
|
|
528
528
|
|
529
529
|
namespace :assets do
|
530
530
|
|
531
|
-
desc "Precompile assets, upload to S3, then remove locally"
|
532
|
-
task :purl, [:
|
533
|
-
|
534
|
-
|
535
|
-
sitenames << args.sitename if !args.sitename.blank?
|
536
|
-
sitenames << args.sitename2 if !args.sitename2.blank?
|
537
|
-
sitenames << args.sitename3 if !args.sitename3.blank?
|
538
|
-
sitenames << args.sitename4 if !args.sitename4.blank?
|
539
|
-
where = args.sitename.blank? ? "" : "name = '#{args.sitename}'"
|
540
|
-
where += " OR name = '#{args.sitename2}'" if !args.sitename2.blank?
|
541
|
-
where += " OR name = '#{args.sitename3}'" if !args.sitename3.blank?
|
542
|
-
where += " OR name = '#{args.sitename4}'" if !args.sitename4.blank?
|
543
|
-
|
544
|
-
`mv #{Rails.root.join('public', 'assets', 'manifest.yml')} #{Rails.root.join('public', 'manifest1.yml')}`
|
545
|
-
|
546
|
-
puts "Copying site assets into host assets..."
|
547
|
-
Caboose::Site.where(where).all.each do |site|
|
548
|
-
site_js = Rails.root.join(Caboose::site_assets_path, site.name, 'js')
|
549
|
-
site_css = Rails.root.join(Caboose::site_assets_path, site.name, 'css')
|
550
|
-
site_images = Rails.root.join(Caboose::site_assets_path, site.name, 'images')
|
551
|
-
site_fonts = Rails.root.join(Caboose::site_assets_path, site.name, 'fonts')
|
552
|
-
|
553
|
-
host_js = Rails.root.join('app', 'assets', 'javascripts' , site.name)
|
554
|
-
host_css = Rails.root.join('app', 'assets', 'stylesheets' , site.name)
|
555
|
-
host_images = Rails.root.join('app', 'assets', 'images' , site.name)
|
556
|
-
host_fonts = Rails.root.join('app', 'assets', 'fonts' , site.name)
|
531
|
+
desc "Precompile assets, upload to S3, then remove locally"
|
532
|
+
task :purl, [:filename, :force] => :environment do |t, args|
|
533
|
+
if args.filename
|
534
|
+
dest = "#{Rails.root}/tmp/#{args.filename}"
|
557
535
|
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
puts "Moving manifest.yml to public > manifest2.yml"
|
575
|
-
`mv #{Rails.root.join('public', 'assets', 'manifest.yml')} #{Rails.root.join('public', 'manifest2.yml')}`
|
576
|
-
|
577
|
-
new_string = ""
|
578
|
-
|
579
|
-
prefixes = sitenames.map{ |sn| sn + "/"}
|
580
|
-
prefixes << "caboose/"
|
581
|
-
prefixes << "col/"
|
582
|
-
prefixes << "shared/"
|
583
|
-
prefixes << "ninelite.css"
|
584
|
-
|
585
|
-
File.readlines("#{Rails.root.join('public', 'manifest1.yml')}").each do |line|
|
586
|
-
if !line.starts_with?(*prefixes)
|
587
|
-
new_string += (line)
|
588
|
-
end
|
589
|
-
end
|
590
|
-
|
591
|
-
File.readlines("#{Rails.root.join('public', 'manifest2.yml')}").each do |line|
|
592
|
-
if line.starts_with?(*prefixes)
|
593
|
-
new_string += (line)
|
594
|
-
end
|
595
|
-
end
|
596
|
-
|
597
|
-
puts "Writing to public > manifest3.yml"
|
598
|
-
`touch #{Rails.root.join('public', 'manifest3.yml')}`
|
599
|
-
File.open("#{Rails.root.join('public', 'manifest3.yml')}", "w") { |f| f.write(new_string)}
|
600
|
-
|
601
|
-
puts "Removing assets from public/assets, but leaving manifest file..."
|
602
|
-
`mv #{Rails.root.join('public', 'assets', 'sources_manifest.yml')} #{Rails.root.join('public', 'sources_manifest.yml')}`
|
603
|
-
`rm -rf #{Rails.root.join('public', 'assets')}`
|
604
|
-
`rm #{Rails.root.join('public', 'manifest1.yml')}`
|
605
|
-
`rm #{Rails.root.join('public', 'manifest2.yml')}`
|
606
|
-
`mkdir #{Rails.root.join('public', 'assets')}`
|
607
|
-
`mv #{Rails.root.join('public', 'manifest3.yml')} #{Rails.root.join('public', 'assets', 'manifest.yml')}`
|
608
|
-
`mv #{Rails.root.join('public', 'sources_manifest.yml')} #{Rails.root.join('public', 'assets', 'sources_manifest.yml')}`
|
609
|
-
|
610
|
-
else
|
611
|
-
puts "Removing assets from public/assets, but leaving manifest file..."
|
612
|
-
`rm #{Rails.root.join('public', 'manifest1.yml')}`
|
613
|
-
`mv #{Rails.root.join('public', 'assets', 'manifest.yml')} #{Rails.root.join('public', 'manifest.yml')}`
|
614
|
-
`mv #{Rails.root.join('public', 'assets', 'sources_manifest.yml')} #{Rails.root.join('public', 'sources_manifest.yml')}`
|
615
|
-
`rm -rf #{Rails.root.join('public', 'assets')}`
|
616
|
-
`mkdir #{Rails.root.join('public', 'assets')}`
|
617
|
-
`mv #{Rails.root.join('public', 'manifest.yml')} #{Rails.root.join('public', 'assets', 'manifest.yml')}`
|
618
|
-
`mv #{Rails.root.join('public', 'sources_manifest.yml')} #{Rails.root.join('public', 'assets', 'sources_manifest.yml')}`
|
536
|
+
# Compile the file
|
537
|
+
puts "Compiling #{args.filename}..."
|
538
|
+
File.write(dest, Uglifier.compile(Rails.application.assets.find_asset(args.filename).to_s))
|
539
|
+
|
540
|
+
# Copy the file from dest to s3/assets
|
541
|
+
puts "Copying #{args.filename} to s3..."
|
542
|
+
config = YAML.load(File.read(Rails.root.join('config', 'aws.yml')))['production']
|
543
|
+
AWS.config({ :access_key_id => config['access_key_id'], :secret_access_key => config['secret_access_key'] })
|
544
|
+
bucket = AWS::S3::Bucket.new(config['bucket'])
|
545
|
+
obj = bucket.objects["assets/#{args.filename}"]
|
546
|
+
obj.write(:file => dest, :acl => :public_read)
|
547
|
+
|
548
|
+
# Remove the temp file
|
549
|
+
puts "Cleaning up..."
|
550
|
+
`rm -rf #{dest}`
|
551
|
+
exit
|
619
552
|
end
|
553
|
+
|
554
|
+
# Otherwise, precompile all the files
|
555
|
+
|
556
|
+
# Copy any site assets into the host app assets directory first
|
557
|
+
puts "Copying site assets into host assets..."
|
558
|
+
copy_site_assets_info_host_assets(args.force)
|
559
|
+
|
560
|
+
#puts "Running precompile..."
|
561
|
+
Rake::Task['assets:precompile'].invoke("--trace")
|
562
|
+
|
563
|
+
puts "Removing assets from public/assets, but leaving manifest file..."
|
564
|
+
str = `ls -l #{Rails.root}/public/assets/.sprockets-manifest-*.json`
|
565
|
+
manifest = str.strip.split('/').last
|
566
|
+
`mv #{Rails.root.join('public', 'assets', manifest)} #{Rails.root.join('public', manifest)}`
|
567
|
+
`rm -rf #{Rails.root.join('public', 'assets')}`
|
568
|
+
`mkdir #{Rails.root.join('public', 'assets')}`
|
569
|
+
`mv #{Rails.root.join('public', manifest)} #{Rails.root.join('public', 'assets', manifest)}`
|
570
|
+
|
571
|
+
# Clean up
|
572
|
+
puts "Removing site assets from host assets..."
|
573
|
+
remove_site_assets_from_host_assets
|
574
|
+
|
575
|
+
# Upload the block type manifest file
|
576
|
+
Rake::Task['assets:upload_assets_manifest'].invoke
|
577
|
+
|
578
|
+
# Copy non-digest file names to s3
|
579
|
+
Rake::Task['assets:upload_nondigest_assets'].invoke
|
580
|
+
|
581
|
+
end
|
582
|
+
|
583
|
+
desc "PURL without precompile"
|
584
|
+
task :purl_without_precompile => :environment do |t, args|
|
585
|
+
|
586
|
+
# Copy any site assets into the host app assets directory first
|
587
|
+
puts "Copying site assets into host assets..."
|
588
|
+
copy_site_assets_info_host_assets(args.force)
|
620
589
|
|
590
|
+
#puts "Running precompile..."
|
591
|
+
#Rake::Task['assets:precompile'].invoke("--trace")
|
592
|
+
|
593
|
+
puts "Removing assets from public/assets, but leaving manifest file..."
|
594
|
+
str = `ls -l #{Rails.root}/public/assets/.sprockets-manifest-*.json`
|
595
|
+
manifest = str.strip.split('/').last
|
596
|
+
`mv #{Rails.root.join('public', 'assets', manifest)} #{Rails.root.join('public', manifest)}`
|
597
|
+
`rm -rf #{Rails.root.join('public', 'assets')}`
|
598
|
+
`mkdir #{Rails.root.join('public', 'assets')}`
|
599
|
+
`mv #{Rails.root.join('public', manifest)} #{Rails.root.join('public', 'assets', manifest)}`
|
600
|
+
|
601
|
+
# Clean up
|
621
602
|
puts "Removing site assets from host assets..."
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
603
|
+
remove_site_assets_from_host_assets
|
604
|
+
|
605
|
+
end
|
606
|
+
|
607
|
+
desc "Copy non-digest file names in asset manifest file to s3"
|
608
|
+
task :upload_nondigest_assets => :environment do
|
609
|
+
|
610
|
+
puts "Uploading non-digest files..."
|
611
|
+
|
612
|
+
str = `ls -l #{Rails.root}/public/assets/.sprockets-manifest-*.json`
|
613
|
+
manifest = str.strip.split('/').last
|
614
|
+
str = File.read("#{Rails.root}/public/assets/#{manifest}")
|
615
|
+
m = JSON.parse(str)
|
616
|
+
#ap m
|
617
|
+
|
618
|
+
config = YAML.load(File.read(Rails.root.join('config', 'aws.yml')))[Rails.env]
|
619
|
+
s3 = Aws::S3::Client.new(:region => 'us-east-1', :credentials => Aws::Credentials.new(config['access_key_id'], config['secret_access_key']))
|
627
620
|
|
628
|
-
|
629
|
-
|
630
|
-
|
631
|
-
|
621
|
+
m['assets'].each do |k,d|
|
622
|
+
puts " - Uploading #{k}..."
|
623
|
+
begin
|
624
|
+
s3.copy_object(
|
625
|
+
:copy_source => "#{config['bucket']}/assets/#{d}",
|
626
|
+
:bucket => config['bucket'],
|
627
|
+
:key => "assets/#{k}"
|
628
|
+
#:content_type => content_type,
|
629
|
+
#:metadata_directive => 'REPLACE'
|
630
|
+
)
|
631
|
+
rescue Exception => ex
|
632
|
+
puts "- Error uploading #{k} - #{ex.message}"
|
633
|
+
end
|
632
634
|
end
|
633
|
-
|
635
|
+
|
636
|
+
#m['files'].each do |k,f|
|
637
|
+
# puts " - Uploading #{f['logical_path']}..."
|
638
|
+
# s3.copy_object(
|
639
|
+
# :copy_source => "#{config['bucket']}/assets/#{k}",
|
640
|
+
# :bucket => config['bucket'],
|
641
|
+
# :key => "assets/#{f['logical_path']}"
|
642
|
+
# #:content_type => content_type,
|
643
|
+
# #:metadata_directive => 'REPLACE'
|
644
|
+
# )
|
645
|
+
#end
|
646
|
+
|
647
|
+
end
|
648
|
+
|
649
|
+
desc "Upload a mini version of the asset manifest file to S3"
|
650
|
+
task :upload_assets_manifest => :environment do
|
651
|
+
|
652
|
+
# Find the sprockets manifest file
|
653
|
+
str = `ls #{Rails.root}/public/assets/.sprockets-manifest-*.json`
|
654
|
+
file = str.strip.split("\n").first.split('/').last
|
655
|
+
h = JSON.parse(File.read("#{Rails.root}/public/assets/#{file}"))
|
656
|
+
h2 = {}
|
657
|
+
h['assets'].each do |k,v|
|
658
|
+
arr = k.split('.')
|
659
|
+
ext = arr.pop
|
660
|
+
filename = arr.join('.')
|
661
|
+
h2[k] = v.gsub("#{filename}-",'').gsub(".#{ext}",'')
|
662
|
+
end
|
663
|
+
|
664
|
+
# Create a new digest number
|
665
|
+
digest = Caboose.random_string(32)
|
666
|
+
|
667
|
+
json_str = h2.to_json
|
668
|
+
jsonp_str = "Caboose.asset_loader.assets_manifest_callback(#{json_str});"
|
669
|
+
|
670
|
+
# Write the files locally
|
671
|
+
puts " - Writing local file #{Rails.root}/public/assets/.assets-manifest-#{digest}.json..."
|
672
|
+
File.open("#{Rails.root}/public/assets/.assets-manifest-#{digest}.json", 'w+') { |f| f.write(json_str) }
|
673
|
+
puts " - Writing local file #{Rails.root}/public/assets/.assets-manifest-#{digest}.js..."
|
674
|
+
File.open("#{Rails.root}/public/assets/.assets-manifest-#{digest}.js", 'w+') { |f| f.write(jsonp_str) }
|
675
|
+
|
676
|
+
# Upload to S3
|
677
|
+
config = YAML.load(File.read(Rails.root.join('config', 'aws.yml')))[Rails.env]
|
678
|
+
s3 = Aws::S3::Client.new(:region => 'us-east-1', :credentials => Aws::Credentials.new(config['access_key_id'], config['secret_access_key']))
|
679
|
+
puts " - Uploading .assets-manifest-#{digest}.json..."
|
680
|
+
s3.put_object(:body => json_str , :bucket => config['bucket'], :key => "assets/.assets-manifest-#{digest}.json")
|
681
|
+
puts " - Uploading .assets-manifest-#{digest}.js..."
|
682
|
+
s3.put_object(:body => jsonp_str , :bucket => config['bucket'], :key => "assets/.assets-manifest-#{digest}.js")
|
683
|
+
end
|
684
|
+
|
685
|
+
desc "Force Purl"
|
686
|
+
task :purl_force => :environment do
|
687
|
+
puts "Running precompile..."
|
688
|
+
Rake::Task['assets:purl'].invoke(nil, true)
|
634
689
|
end
|
635
690
|
|
636
691
|
desc "Create .gz versions of assets"
|
@@ -671,6 +726,58 @@ namespace :assets do
|
|
671
726
|
i = i + 1
|
672
727
|
end
|
673
728
|
end
|
674
|
-
end
|
729
|
+
end
|
730
|
+
|
731
|
+
def copy_site_assets_info_host_assets(force)
|
732
|
+
Caboose::Site.all.each do |site|
|
733
|
+
site_js = Rails.root.join(Caboose::site_assets_path, site.name, 'js')
|
734
|
+
site_css = Rails.root.join(Caboose::site_assets_path, site.name, 'css')
|
735
|
+
site_images = Rails.root.join(Caboose::site_assets_path, site.name, 'images')
|
736
|
+
site_fonts = Rails.root.join(Caboose::site_assets_path, site.name, 'fonts')
|
737
|
+
|
738
|
+
host_js = Rails.root.join('app', 'assets', 'javascripts' , site.name)
|
739
|
+
host_css = Rails.root.join('app', 'assets', 'stylesheets' , site.name)
|
740
|
+
host_images = Rails.root.join('app', 'assets', 'images' , site.name)
|
741
|
+
host_fonts = Rails.root.join('app', 'assets', 'fonts' , site.name)
|
742
|
+
|
743
|
+
# Check to see if the host folders already exist (could have been from a previous failed purl)
|
744
|
+
abort "Error: Both #{host_js } and #{site_js } exist. Please remove one or the other before purling." if !force && File.exists?(host_js)
|
745
|
+
abort "Error: Both #{host_css } and #{site_css } exist. Please remove one or the other before purling." if !force && File.exists?(host_css)
|
746
|
+
abort "Error: Both #{host_images } and #{site_images } exist. Please remove one or the other before purling." if !force && File.exists?(host_images)
|
747
|
+
abort "Error: Both #{host_fonts } and #{site_fonts } exist. Please remove one or the other before purling." if !force && File.exists?(host_fonts)
|
748
|
+
|
749
|
+
if force
|
750
|
+
`rm -rf #{host_js }` if File.exists?(host_js)
|
751
|
+
`rm -rf #{host_css }` if File.exists?(host_css)
|
752
|
+
`rm -rf #{host_images }` if File.exists?(host_images)
|
753
|
+
`rm -rf #{host_fonts }` if File.exists?(host_fonts)
|
754
|
+
end
|
755
|
+
|
756
|
+
`mkdir -p #{host_js }` if File.directory?(site_js)
|
757
|
+
`mkdir -p #{host_css }` if File.directory?(site_css)
|
758
|
+
`mkdir -p #{host_images }` if File.directory?(site_images)
|
759
|
+
`mkdir -p #{host_fonts }` if File.directory?(site_fonts)
|
760
|
+
|
761
|
+
`cp -R #{site_js } #{host_js }` if File.directory?(site_js)
|
762
|
+
`cp -R #{site_css } #{host_css }` if File.directory?(site_css)
|
763
|
+
`cp -R #{site_images } #{host_images }` if File.directory?(site_images)
|
764
|
+
`cp -R #{site_fonts } #{host_fonts }` if File.directory?(site_fonts)
|
765
|
+
end
|
766
|
+
end
|
767
|
+
|
768
|
+
def remove_site_assets_from_host_assets
|
769
|
+
Caboose::Site.all.each do |site|
|
770
|
+
|
771
|
+
host_js = Rails.root.join('app', 'assets', 'javascripts' , Shellwords.escape(site.name))
|
772
|
+
host_css = Rails.root.join('app', 'assets', 'stylesheets' , Shellwords.escape(site.name))
|
773
|
+
host_images = Rails.root.join('app', 'assets', 'images' , Shellwords.escape(site.name))
|
774
|
+
host_fonts = Rails.root.join('app', 'assets', 'fonts' , Shellwords.escape(site.name))
|
775
|
+
|
776
|
+
`rm -rf #{host_js }`
|
777
|
+
`rm -rf #{host_css }`
|
778
|
+
`rm -rf #{host_images }`
|
779
|
+
`rm -rf #{host_fonts }`
|
780
|
+
end
|
781
|
+
end
|
675
782
|
|
676
783
|
end
|