generated-assets 1.0.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a05c43b996cd0851316737175dc7fcee25867fe7
4
+ data.tar.gz: 17e4115951bf3864c79aef73bbdd781e02acc80e
5
+ SHA512:
6
+ metadata.gz: 56e082770b8894698932e9aa3d79d66d191d7bb5e90cfcdec6404217cf0a4238d2c34d338eb8902e4f847fa94f5694d8291ee07a163c910024d580c1f8266db2
7
+ data.tar.gz: b8271ea4b6dc287a82677eb96397a11660b2bf159ac734c96466248a14da9ff96b021b095b76c770553df6b5997be50c0a520a7cebc5d92dad90f4f8121f25c4
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ group :development, :test do
6
+ gem 'pry-nav'
7
+ gem 'rake'
8
+ gem 'rspec'
9
+ end
data/Rakefile ADDED
@@ -0,0 +1,30 @@
1
+ # encoding: UTF-8
2
+
3
+ $:.unshift File.join(File.dirname(__FILE__), 'lib')
4
+
5
+ require 'rubygems' unless ENV['NO_RUBYGEMS']
6
+
7
+ require 'bundler'
8
+ require 'pry-nav'
9
+ require 'rspec/core/rake_task'
10
+ require 'rubygems/package_task'
11
+
12
+ require 'rails'
13
+ require 'sprockets/railtie'
14
+ require 'generated-assets'
15
+
16
+ Bundler::GemHelper.install_tasks
17
+
18
+ task :default => :spec
19
+
20
+ desc 'Run specs'
21
+ RSpec::Core::RakeTask.new do |t|
22
+ t.pattern = './spec/**/*_spec.rb'
23
+ end
24
+
25
+ # for dummy app
26
+ Dir.chdir('spec') do
27
+ require File.expand_path('../spec/config/application', __FILE__)
28
+ GeneratedAssets::DummyApplication.initialize!
29
+ GeneratedAssets::DummyApplication.load_tasks
30
+ end
@@ -0,0 +1,28 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), 'lib')
2
+ require 'generated-assets/version'
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "generated-assets"
6
+ s.version = ::GeneratedAssets::VERSION
7
+ s.authors = ["Cameron Dutro"]
8
+ s.email = ["camertron@gmail.com"]
9
+ s.homepage = "http://github.com/camertron"
10
+
11
+ s.description = s.summary = 'Programmatically generate assets for the Rails asset pipeline.'
12
+
13
+ s.platform = Gem::Platform::RUBY
14
+ s.has_rdoc = true
15
+
16
+ if ENV['RAILS_VERSION']
17
+ s.add_dependency 'railties', "~> #{ENV['RAILS_VERSION']}"
18
+ else
19
+ s.add_dependency 'railties', '>= 3.2.0', '< 5'
20
+ end
21
+
22
+ s.add_dependency 'sprockets-rails'
23
+ s.add_dependency 'tilt'
24
+ s.add_dependency 'tzinfo'
25
+
26
+ s.require_path = 'lib'
27
+ s.files = Dir["{lib,spec}/**/*", "Gemfile", "README.md", "Rakefile", "generated-assets.gemspec"]
28
+ end
@@ -0,0 +1,23 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'fileutils'
4
+ require 'generated-assets/railtie'
5
+ require 'securerandom'
6
+ require 'tmpdir'
7
+
8
+ module GeneratedAssets
9
+ autoload :Entry, 'generated-assets/entry'
10
+ autoload :Manifest, 'generated-assets/manifest'
11
+ autoload :Processor, 'generated-assets/processor'
12
+ autoload :RailsManifest, 'generated-assets/rails_manifest'
13
+
14
+ class << self
15
+ def asset_dir
16
+ @asset_dir ||= begin
17
+ dir = File.join(Dir.tmpdir, SecureRandom.hex)
18
+ FileUtils.mkdir_p(dir)
19
+ dir
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,27 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'fileutils'
4
+
5
+ module GeneratedAssets
6
+ class Entry
7
+ DEFAULT_PROC = Proc.new { '' }
8
+
9
+ attr_reader :logical_path, :callback, :options
10
+
11
+ def initialize(logical_path, callback, options = {})
12
+ @logical_path = logical_path
13
+ @callback = callback || DEFAULT_PROC
14
+ @options = options
15
+ end
16
+
17
+ def precompile?
18
+ @options.fetch(:precompile, false)
19
+ end
20
+
21
+ def write_to(prefix)
22
+ path = File.join(prefix, logical_path)
23
+ FileUtils.mkdir_p(File.dirname(path))
24
+ File.write(path, callback.call)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,64 @@
1
+ # encoding: UTF-8
2
+
3
+ module GeneratedAssets
4
+ class Manifest
5
+ attr_reader :app, :prefix, :entries
6
+ attr_reader :before_hooks, :after_hooks
7
+
8
+ def initialize(app, prefix)
9
+ @app = app
10
+ @prefix = prefix
11
+ @entries = []
12
+ @before_hooks = []
13
+ @after_hooks = []
14
+ end
15
+
16
+ def add(logical_path, options = {}, &block)
17
+ entries << Entry.new(logical_path, block, options)
18
+ end
19
+
20
+ def apply!
21
+ before_hooks.each(&:call)
22
+
23
+ write_files
24
+ add_precompile_paths
25
+
26
+ after_hooks.each(&:call)
27
+ end
28
+
29
+ def before_apply(&block)
30
+ before_hooks << block
31
+ end
32
+
33
+ def after_apply(&block)
34
+ after_hooks << block
35
+ end
36
+
37
+ private
38
+
39
+ def write_files
40
+ entries.each do |entry|
41
+ entry.write_to(prefix)
42
+ end
43
+ end
44
+
45
+ def add_precompile_paths
46
+ entries.each do |entry|
47
+ if entry.precompile?
48
+ app.config.assets.precompile << remove_extra_extensions(
49
+ entry.logical_path
50
+ )
51
+ end
52
+ end
53
+ end
54
+
55
+ def remove_extra_extensions(path)
56
+ until File.extname(path).empty?
57
+ ext = File.extname(path)
58
+ path = path.chomp(ext)
59
+ end
60
+
61
+ "#{path}#{ext}"
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,88 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'yaml'
4
+ require 'json'
5
+
6
+ module GeneratedAssets
7
+ class RailsManifest
8
+ class << self
9
+ def load_for(app)
10
+ asset_path = asset_path_for(app)
11
+
12
+ [YamlManifest, JsonManifest].each do |klass|
13
+ if manifest_file = klass.find_in(asset_path)
14
+ return klass.load_file(manifest_file)
15
+ end
16
+ end
17
+ end
18
+
19
+ private
20
+
21
+ def asset_path_for(app)
22
+ Pathname(
23
+ File.join(Rails.public_path, app.config.assets.prefix)
24
+ )
25
+ end
26
+ end
27
+
28
+ attr_reader :data
29
+
30
+ def initialize(data)
31
+ @data = data
32
+ end
33
+ end
34
+
35
+ class YamlManifest < RailsManifest
36
+ class << self
37
+ def find_in(path)
38
+ Dir.glob(File.join(path, 'manifest.yml')).first
39
+ end
40
+
41
+ def load_file(file)
42
+ load(File.read(file))
43
+ end
44
+
45
+ def load(raw)
46
+ new(YAML.load(raw))
47
+ end
48
+ end
49
+
50
+ def files
51
+ data
52
+ end
53
+
54
+ def find_by_logical(logical_path)
55
+ files[logical_path]
56
+ end
57
+ end
58
+
59
+ class JsonManifest < RailsManifest
60
+ class << self
61
+ def find_in(path)
62
+ Dir.glob(File.join(path, '.*sprockets-manifest*.json')).first
63
+ end
64
+
65
+ def load_file(file)
66
+ load(File.read(file))
67
+ end
68
+
69
+ def load(raw)
70
+ new(JSON.parse(raw))
71
+ end
72
+ end
73
+
74
+ def files
75
+ data['files']
76
+ end
77
+
78
+ def find_by_logical(logical_path)
79
+ files.each_pair do |digest_file, attributes|
80
+ if attributes['logical_path'] == logical_path
81
+ return digest_file
82
+ end
83
+ end
84
+
85
+ nil
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,25 @@
1
+ # encoding: UTF-8
2
+
3
+ module GeneratedAssets
4
+ class Railtie < ::Rails::Railtie
5
+ config.before_configuration do |app|
6
+ app.config.assets.generated = GeneratedAssets::Manifest.new(
7
+ app, File.join(GeneratedAssets.asset_dir, app.class.parent_name)
8
+ )
9
+ end
10
+
11
+ config.after_initialize do |app|
12
+ if app.config.assets.compile
13
+ app.config.assets.generated.apply!
14
+ end
15
+ end
16
+
17
+ initializer :i18n_js_assets, group: :all do |app|
18
+ if app.config.assets.compile
19
+ app.config.assets.paths << File.join(
20
+ GeneratedAssets.asset_dir, app.class.parent_name
21
+ )
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,5 @@
1
+ # encoding: UTF-8
2
+
3
+ module GeneratedAssets
4
+ VERSION = '1.0.0'
5
+ end
File without changes
@@ -0,0 +1,10 @@
1
+ module GeneratedAssets
2
+ class DummyApplication < ::Rails::Application
3
+ config.eager_load = false
4
+ config.assets.enabled = true
5
+ config.assets.compile = true
6
+ config.assets.allow_debugging = true
7
+ config.assets.digest = true
8
+ config.active_support.deprecation = :stderr
9
+ end
10
+ end
@@ -0,0 +1,2 @@
1
+ # Intentionally blank.
2
+ # i18n-js versions less than v3 expect this file to exist.
@@ -0,0 +1,3 @@
1
+ en:
2
+ my_app:
3
+ teapot: I'm a little teapot
@@ -0,0 +1,3 @@
1
+ es:
2
+ my_app:
3
+ teapot: Soy una tetera pequeña
@@ -0,0 +1,48 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'spec_helper'
4
+
5
+ include GeneratedAssets
6
+
7
+ describe Entry do
8
+ let(:entry) do
9
+ Entry.new(logical_path, callback)
10
+ end
11
+
12
+ let(:callback) do
13
+ -> { 'Callback contents' }
14
+ end
15
+
16
+ let(:logical_path) do
17
+ 'foo/bar.txt'
18
+ end
19
+
20
+ describe '#precompile?' do
21
+ it 'indicates no precompilation' do
22
+ expect(entry.precompile?).to eq(false)
23
+ end
24
+ end
25
+
26
+ describe '#write_to' do
27
+ it 'writes the file to the given path' do
28
+ entry.write_to(tmpdir)
29
+ absolute_path = tmpdir.join(logical_path)
30
+ files = Dir.glob(tmpdir.join('**', '**'))
31
+ expect(files).to include(absolute_path.to_s)
32
+ contents = File.read(absolute_path)
33
+ expect(contents).to eq(callback.call)
34
+ end
35
+ end
36
+
37
+ context 'with an entry that should be precompiled' do
38
+ let(:entry) do
39
+ Entry.new('foo/bar.txt', nil, precompile: true)
40
+ end
41
+
42
+ describe '#precompile?' do
43
+ it 'indicates precompilation' do
44
+ expect(entry.precompile?).to eq(true)
45
+ end
46
+ end
47
+ end
48
+ end
File without changes
data/spec/log/test.log ADDED
@@ -0,0 +1,71 @@
1
+ Compiled application.js (0ms) (pid 95884)
2
+ Compiled test/generated.js (0ms) (pid 95884)
3
+ Compiled application.js (0ms) (pid 96212)
4
+ Compiled test/generated.js (0ms) (pid 96212)
5
+ Compiled application.js (0ms) (pid 96898)
6
+ Compiled test/generated.js (0ms) (pid 96898)
7
+ Compiled application.js (0ms) (pid 1953)
8
+ Compiled test/generated.js (0ms) (pid 1953)
9
+ Compiled application.js (0ms) (pid 2286)
10
+ Compiled test/generated.js (0ms) (pid 2286)
11
+ Compiled application.js (0ms) (pid 2624)
12
+ Compiled test/generated.js (0ms) (pid 2624)
13
+ Compiled application.js (0ms) (pid 2961)
14
+ Compiled test/generated.js (0ms) (pid 2961)
15
+ Compiled application.js (0ms) (pid 3629)
16
+ Compiled test/generated.js (0ms) (pid 3629)
17
+ Compiled application.js (0ms) (pid 3964)
18
+ Compiled test/generated.js (0ms) (pid 3964)
19
+ Compiled application.js (0ms) (pid 4297)
20
+ Compiled test/generated.js (0ms) (pid 4297)
21
+ Compiled application.js (0ms) (pid 4632)
22
+ Compiled test/generated.js (0ms) (pid 4632)
23
+ Compiled application.js (0ms) (pid 4964)
24
+ Compiled test/generated.js (0ms) (pid 4964)
25
+ Compiled application.js (0ms) (pid 6636)
26
+ Compiled test/generated.js (0ms) (pid 6636)
27
+ Compiled application.js (0ms) (pid 7347)
28
+ Compiled test/generated.js (0ms) (pid 7347)
29
+ Compiled application.js (0ms) (pid 8340)
30
+ Compiled test/generated.js (0ms) (pid 8340)
31
+ Compiled application.js (0ms) (pid 8672)
32
+ Compiled test/generated.js (0ms) (pid 8672)
33
+ Compiled application.js (0ms) (pid 9007)
34
+ Compiled test/generated.js (0ms) (pid 9007)
35
+ Compiled application.js (0ms) (pid 9344)
36
+ Compiled test/generated.js (0ms) (pid 9344)
37
+ Compiled application.js (0ms) (pid 9678)
38
+ Compiled test/generated.js (0ms) (pid 9678)
39
+ Compiled application.js (0ms) (pid 10012)
40
+ Compiled test/generated.js (0ms) (pid 10012)
41
+ Compiled application.js (0ms) (pid 10348)
42
+ Compiled test/generated.js (0ms) (pid 10348)
43
+ Compiled application.js (3ms) (pid 10683)
44
+ Compiled test/generated.js (3ms) (pid 10683)
45
+ Compiled application.js (3ms) (pid 11019)
46
+ Compiled application.js (3ms) (pid 11689)
47
+ Compiled application.js (3ms) (pid 13034)
48
+ Compiled application.js (0ms) (pid 13395)
49
+ Compiled application.js (0ms) (pid 13728)
50
+ Compiled application.js (0ms) (pid 14061)
51
+ Compiled application.js (0ms) (pid 14396)
52
+ Compiled application.js (0ms) (pid 14734)
53
+ Compiled application.js (0ms) (pid 15753)
54
+ Compiled application.js (0ms) (pid 16114)
55
+ Compiled application.js (0ms) (pid 16446)
56
+ Compiled application.js (0ms) (pid 16793)
57
+ Compiled application.js (0ms) (pid 17124)
58
+ Compiled application.js (0ms) (pid 18123)
59
+ Compiled application.js (0ms) (pid 18458)
60
+ Compiled application.js (0ms) (pid 18804)
61
+ Compiled application.js (0ms) (pid 24527)
62
+ Compiled application.js (0ms) (pid 24532)
63
+ Compiled application.js (0ms) (pid 25284)
64
+ Compiled application.js (0ms) (pid 25289)
65
+ Compiled application.js (0ms) (pid 25293)
66
+ Compiled application.js (0ms) (pid 25665)
67
+ Compiled application.js (0ms) (pid 25670)
68
+ Compiled application.js (0ms) (pid 25674)
69
+ Compiled application.js (0ms) (pid 47444)
70
+ Compiled application.js (0ms) (pid 47450)
71
+ Compiled application.js (0ms) (pid 47455)
@@ -0,0 +1,50 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'spec_helper'
4
+
5
+ include GeneratedAssets
6
+
7
+ describe Manifest do
8
+ let(:manifest) do
9
+ Manifest.new(app, tmpdir)
10
+ end
11
+
12
+ let(:assets_config) do
13
+ app.config.assets
14
+ end
15
+
16
+ let(:logical_path) do
17
+ 'foo/bar.txt'
18
+ end
19
+
20
+ describe '#add' do
21
+ it 'adds a new entry to the manifest' do
22
+ expect { manifest.add(logical_path) }.to(
23
+ change { manifest.entries.size }.by(1)
24
+ )
25
+ end
26
+ end
27
+
28
+ describe '#apply!' do
29
+ it 'writes all files' do
30
+ manifest.add('foo/bar.txt') { "Bar's text" }
31
+ manifest.add('foo/baz.txt') { "Baz's text" }
32
+ manifest.apply!
33
+
34
+ expect(tmpdir.join('foo/bar.txt').read).to eq("Bar's text")
35
+ expect(tmpdir.join('foo/baz.txt').read).to eq("Baz's text")
36
+ end
37
+
38
+ it "writes all files and adds those marked to the app's precompile list" do
39
+ manifest.add('foo/bar.txt') { "Bar's text" }
40
+ manifest.add('foo/baz.txt', precompile: true) { "Baz's text" }
41
+ manifest.apply!
42
+
43
+ expect(tmpdir.join('foo/bar.txt').read).to eq("Bar's text")
44
+ expect(tmpdir.join('foo/baz.txt').read).to eq("Baz's text")
45
+
46
+ expect(assets_config.precompile).to include('foo/baz.txt')
47
+ expect(assets_config.precompile).to_not include('foo/bar.txt')
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,40 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'spec_helper'
4
+ require 'pathname'
5
+
6
+ include GeneratedAssets
7
+
8
+ describe 'precompilation' do
9
+ let(:assets_config) do
10
+ app.config.assets
11
+ end
12
+
13
+ let(:asset_path) do
14
+ Pathname(
15
+ File.join(Rails.public_path, assets_config.prefix)
16
+ )
17
+ end
18
+
19
+ it 'precompiles generated assets correctly' do
20
+ assets_config.generated.add('foo/bar.txt', precompile: true) do
21
+ 'bar text'
22
+ end
23
+
24
+ assets_config.generated.apply!
25
+
26
+ begin
27
+ Rake::Task['assets:precompile:primary'].invoke
28
+ Rake::Task['assets:precompile:nondigest'].invoke
29
+ rescue RuntimeError
30
+ Rake::Task['assets:precompile'].invoke
31
+ end
32
+
33
+ rails_manifest = RailsManifest.load_for(app)
34
+ digest_file = rails_manifest.find_by_logical('foo/bar.txt')
35
+
36
+ expect(digest_file).to_not be_nil
37
+ contents = asset_path.join(digest_file).read
38
+ expect(contents).to eq('bar text')
39
+ end
40
+ end
@@ -0,0 +1,88 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'spec_helper'
4
+ require 'json'
5
+ require 'securerandom'
6
+ require 'yaml'
7
+
8
+ include GeneratedAssets
9
+
10
+ describe RailsManifest do
11
+ shared_examples 'a compliant manifest' do
12
+ describe '#find_by_logical' do
13
+ it 'finds the digested asset for the logical one' do
14
+ expect(manifest.find_by_logical('myfiles/file1.js')).to(
15
+ eq('myfiles/file1-abc123.js')
16
+ )
17
+
18
+ expect(manifest.find_by_logical('myfiles/file2.css')).to(
19
+ eq('myfiles/file2-def456.css')
20
+ )
21
+ end
22
+ end
23
+ end
24
+
25
+ context 'with a json manifest (i.e. Rails 4)' do
26
+ let(:manifest_hash) do
27
+ {
28
+ 'files' => {
29
+ 'myfiles/file1-abc123.js' => {
30
+ 'logical_path' => 'myfiles/file1.js'
31
+ },
32
+ 'myfiles/file2-def456.css' => {
33
+ 'logical_path' => 'myfiles/file2.css'
34
+ }
35
+ }
36
+ }
37
+ end
38
+
39
+ let(:manifest_file) do
40
+ app.root
41
+ .join('public/assets')
42
+ .join(".sprockets-manifest-#{SecureRandom.hex}.json")
43
+ end
44
+
45
+ before(:each) do
46
+ FileUtils.mkdir_p(manifest_file.dirname)
47
+ File.write(manifest_file, manifest_hash.to_json)
48
+ end
49
+
50
+ let(:manifest) { RailsManifest.load_for(app) }
51
+
52
+ describe '.load_for' do
53
+ it 'finds the json manifest and loads it' do
54
+ expect(manifest).to be_a(JsonManifest)
55
+ end
56
+ end
57
+
58
+ it_behaves_like 'a compliant manifest'
59
+ end
60
+
61
+ context 'with a yaml manifest (i.e. rails 3)' do
62
+ let(:manifest_hash) do
63
+ {
64
+ 'myfiles/file1.js' => 'myfiles/file1-abc123.js',
65
+ 'myfiles/file2.css' => 'myfiles/file2-def456.css'
66
+ }
67
+ end
68
+
69
+ let(:manifest_file) do
70
+ app.root.join('public/assets/manifest.yml')
71
+ end
72
+
73
+ before(:each) do
74
+ FileUtils.mkdir_p(manifest_file.dirname)
75
+ File.write(manifest_file, manifest_hash.to_json)
76
+ end
77
+
78
+ let(:manifest) { RailsManifest.load_for(app) }
79
+
80
+ describe '.load_for' do
81
+ it 'finds the yaml manifest and loads it' do
82
+ expect(manifest).to be_a(YamlManifest)
83
+ end
84
+ end
85
+
86
+ it_behaves_like 'a compliant manifest'
87
+ end
88
+ end
@@ -0,0 +1,19 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'spec_helper'
4
+
5
+ include GeneratedAssets
6
+
7
+ describe Railtie do
8
+ let(:assets_config) do
9
+ app.config.assets
10
+ end
11
+
12
+ it 'sets up the manifest' do
13
+ expect(assets_config.generated).to be_a(Manifest)
14
+ end
15
+
16
+ it 'adds the generated asset path to the list of asset paths' do
17
+ expect(assets_config.paths).to include(assets_config.generated.prefix)
18
+ end
19
+ end
@@ -0,0 +1,59 @@
1
+ # encoding: UTF-8
2
+
3
+ $:.push(File.dirname(__FILE__))
4
+
5
+ require 'rspec'
6
+ require 'fileutils'
7
+ require 'pathname'
8
+ require 'tmpdir'
9
+ require 'pry-nav'
10
+
11
+ require 'rails'
12
+ require 'rake'
13
+ require 'sprockets/railtie'
14
+
15
+ ENV['RAILS_ENV'] ||= 'test'
16
+
17
+ require 'generated-assets'
18
+
19
+ Dir.chdir('spec') do
20
+ require File.expand_path('../config/application', __FILE__)
21
+ GeneratedAssets::DummyApplication.initialize!
22
+ GeneratedAssets::DummyApplication.load_tasks # used by precompilation specs
23
+ end
24
+
25
+ module LetDeclarations
26
+ extend RSpec::SharedContext
27
+
28
+ let(:tmpdir) do
29
+ Pathname(Dir.mktmpdir)
30
+ end
31
+
32
+ let(:app) do
33
+ Rails.application
34
+ end
35
+ end
36
+
37
+ RSpec.configure do |config|
38
+ config.include(LetDeclarations)
39
+
40
+ config.before(:each) do
41
+ FileUtils.rm_rf(
42
+ GeneratedAssets::DummyApplication.root.join('tmp').to_s
43
+ )
44
+
45
+ FileUtils.rm_rf(
46
+ GeneratedAssets::DummyApplication.root.join('public').to_s
47
+ )
48
+
49
+ FileUtils.rm_rf(
50
+ app.config.assets.generated.prefix
51
+ )
52
+
53
+ app.config.assets.generated.entries.clear
54
+ end
55
+
56
+ config.after(:each) do
57
+ FileUtils.rm_rf(tmpdir)
58
+ end
59
+ end
metadata ADDED
@@ -0,0 +1,127 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: generated-assets
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Cameron Dutro
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-01-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: railties
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 3.2.0
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '5'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 3.2.0
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '5'
33
+ - !ruby/object:Gem::Dependency
34
+ name: sprockets-rails
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: tilt
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: tzinfo
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :runtime
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ description: Programmatically generate assets for the Rails asset pipeline.
76
+ email:
77
+ - camertron@gmail.com
78
+ executables: []
79
+ extensions: []
80
+ extra_rdoc_files: []
81
+ files:
82
+ - Gemfile
83
+ - Rakefile
84
+ - generated-assets.gemspec
85
+ - lib/generated-assets.rb
86
+ - lib/generated-assets/entry.rb
87
+ - lib/generated-assets/manifest.rb
88
+ - lib/generated-assets/rails_manifest.rb
89
+ - lib/generated-assets/railtie.rb
90
+ - lib/generated-assets/version.rb
91
+ - spec/app/assets/javascripts/application.js
92
+ - spec/config/application.rb
93
+ - spec/config/i18n-js.yml
94
+ - spec/config/locales/en.yml
95
+ - spec/config/locales/es.yml
96
+ - spec/entry_spec.rb
97
+ - spec/log/development.log
98
+ - spec/log/test.log
99
+ - spec/manifest_spec.rb
100
+ - spec/precomp_spec.rb
101
+ - spec/rails_manifest_spec.rb
102
+ - spec/railtie_spec.rb
103
+ - spec/spec_helper.rb
104
+ homepage: http://github.com/camertron
105
+ licenses: []
106
+ metadata: {}
107
+ post_install_message:
108
+ rdoc_options: []
109
+ require_paths:
110
+ - lib
111
+ required_ruby_version: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ required_rubygems_version: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ requirements: []
122
+ rubyforge_project:
123
+ rubygems_version: 2.2.3
124
+ signing_key:
125
+ specification_version: 4
126
+ summary: Programmatically generate assets for the Rails asset pipeline.
127
+ test_files: []