embarista 1.1.2 → 1.1.3

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.
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.2
4
+ bundler_args: --without docs
5
+ notifications:
6
+ tech@yapp.us
7
+ script: bundle exec rake ci
data/Gemfile CHANGED
@@ -2,11 +2,9 @@ source :rubygems
2
2
 
3
3
  gemspec
4
4
 
5
- gem 'rake-pipeline', github: 'livingsocial/rake-pipeline',
6
- ref: '543f4322fe70facee9572d29ddabf7f090dad68a'
7
- gem 'rake-pipeline-web-filters', github: 'wycats/rake-pipeline-web-filters',
8
- ref: 'ba0b8a00356b4c854930a8e849b5629d51ffd70f'
9
-
5
+ gem 'rake-pipeline', github: 'livingsocial/rake-pipeline'
6
+ gem 'rake-pipeline-web-filters', github: 'wycats/rake-pipeline-web-filters'
7
+ gem 'debugger'
10
8
  gem 'pry'
11
9
  gem 'pry-debugger'
12
10
  gem 'pry-remote'
data/README.md CHANGED
@@ -1 +1,3 @@
1
+ [![Build Status](https://secure.travis-ci.org/yappbox/embarista.png?branch=master)](http://travis-ci.org/yappbox/embarista)
2
+
1
3
  Collection of Rake Pipeline stuff we use at Yapp for building Ember apps.
data/Rakefile CHANGED
@@ -7,3 +7,4 @@ require 'rspec/core/rake_task'
7
7
  RSpec::Core::RakeTask.new
8
8
 
9
9
  task :default => :spec
10
+ task :ci => :spec
data/embarista.gemspec CHANGED
@@ -14,8 +14,8 @@ Gem::Specification.new do |gem|
14
14
  gem.require_paths = ["lib"]
15
15
  gem.version = Embarista::VERSION
16
16
 
17
- gem.add_dependency "rake-pipeline", '~> 0.6.0'
18
- gem.add_dependency "rake-pipeline-web-filters", '~> 0.6.0'
17
+ gem.add_dependency "rake-pipeline", '> 0.6.0'
18
+ gem.add_dependency "rake-pipeline-web-filters", '>= 0.6.0'
19
19
  gem.add_dependency "ruby_gntp"
20
20
  gem.add_dependency "listen"
21
21
  gem.add_dependency "colored"
data/lib/embarista.rb CHANGED
@@ -7,6 +7,12 @@ module Embarista
7
7
 
8
8
  autoload :JavascriptPipeline, 'embarista/javascript_pipeline'
9
9
  autoload :Server, 'embarista/server'
10
+
11
+ autoload :Git, 'embarista/git'
12
+ autoload :S3sync, 'embarista/s3sync'
13
+ autoload :DigestHelper, 'embarista/digest_helper'
14
+ autoload :ManifestHelper, 'embarista/manifest_helper'
15
+ autoload :SassFunctions, 'embarista/sass_functions'
10
16
  end
11
17
 
12
18
  Rake::Pipeline::DSL::PipelineDSL.send(:include, Embarista::Helpers)
@@ -0,0 +1,59 @@
1
+ module Embarista
2
+ module DigestHelper
3
+ include FileUtils
4
+ extend self
5
+
6
+ def digest_and_copy_file(filename, target_dir = 'tmp')
7
+ file = Pathname.new(filename)
8
+ target_dir = Pathname.new(target_dir)
9
+
10
+ md5 = Digest::MD5.file(file).hexdigest
11
+ ext = file.extname
12
+ dirname = file.dirname
13
+ name_without_ext = file.basename.to_s.gsub(/#{ext}$/,'')
14
+
15
+ new_filename = "#{name_without_ext}-#{md5}#{ext}"
16
+ target_dir_with_path = target_dir + dirname
17
+ target_full_path = target_dir_with_path + new_filename
18
+
19
+ mkdir_p(target_dir_with_path)
20
+ cp(filename, target_full_path)
21
+
22
+ return dirname + new_filename
23
+ end
24
+
25
+ def digest_directory(origin, target)
26
+ origin = Pathname.new(origin).expand_path
27
+ target = Pathname.new(target).expand_path
28
+
29
+ target_base_dir = target + origin.basename
30
+
31
+ rm_rf target_base_dir
32
+ mkdir_p target_base_dir
33
+
34
+ cd(origin) do
35
+ glob_pattern_with_symlink_support = "**{,/*/**}/*.*" # http://stackoverflow.com/questions/357754/can-i-traverse-symlinked-directories-in-ruby-with-a-glob
36
+ files = Dir.glob(glob_pattern_with_symlink_support).reject { |file| File.directory?(file) }.reject { |file| file =~ /manifest*\.yml/ }
37
+
38
+ manifest_hash = files.each_with_object({}) do |file, manifest|
39
+ manifest[file.to_s] = digest_and_copy_file(file, target_base_dir).to_s
40
+ end
41
+
42
+ manifest_hash = ManifestHelper.prefix_manifest('/', manifest_hash)
43
+
44
+ open('manifest.yml', 'w') do |file|
45
+ YAML.dump(manifest_hash, file)
46
+ end
47
+
48
+ open('manifest.json', 'w') do |file|
49
+ JSON.dump(manifest_hash, file)
50
+ end
51
+
52
+ cp('manifest.yml', target_base_dir + 'manifest-latest.yml')
53
+ cp('manifest.json', target_base_dir + 'manifest-latest.json')
54
+
55
+ return manifest_hash
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,18 @@
1
+ module Embarista
2
+ module Git
3
+ BRANCH_TO_DEPLOY_FROM = 'master'
4
+ extend self
5
+
6
+ def is_dirty?
7
+ not `git status --porcelain`.empty?
8
+ end
9
+
10
+ def git_branches
11
+ `git branch --no-color -vv`
12
+ end
13
+
14
+ def can_deploy_from_curren_branch?
15
+ git_branches =~ /\A\* #{BRANCH_TO_DEPLOY_FROM}.*origin\/#{BRANCH_TO_DEPLOY_FROM}: (ahead|behind)/
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,14 @@
1
+ module Embarista
2
+ module ManifestHelper
3
+ extend self
4
+
5
+ def prefix_manifest(prefix, manifest)
6
+ manifest.each_with_object({}) do |entry, new_manifest|
7
+ key = prefix + entry.first
8
+ value = prefix + entry.last
9
+
10
+ new_manifest[key] = value
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,68 @@
1
+ module Embarista
2
+ class S3sync
3
+ attr_reader :origin, :bucket_name, :pwd, :tmp_root, :manifest_path
4
+
5
+ def initialize(origin, options)
6
+ bucket_name = options.fetch(:bucket_name)
7
+ manifest_path = options.fetch(:manifest_path)
8
+ aws_key = options.fetch(:aws_key)
9
+ aws_secret = options.fetch(:aws_secret)
10
+
11
+ @connection = AWS::S3::Base.establish_connection!(
12
+ :access_key_id => aws_key,
13
+ :secret_access_key => aws_secret
14
+ )
15
+
16
+ @pwd = Pathname.new('').expand_path
17
+ @origin = origin
18
+ @bucket_name = bucket_name
19
+ @tmp_root = @pwd + @origin
20
+ @manifest_path = manifest_path
21
+ end
22
+
23
+ def self.sync(origin, options)
24
+ new(origin, options).sync
25
+ end
26
+
27
+ def store(name, file)
28
+ puts " -> #{name}"
29
+ AWS::S3::S3Object.store(name, file, bucket_name)
30
+ end
31
+
32
+ def sync
33
+ delta_manifest = build_delta_manifest
34
+
35
+ if delta_manifest.empty?
36
+ puts 'everything is up to date'
37
+ return
38
+ end
39
+
40
+ delta_manifest.values.each do |file_name|
41
+ open(tmp_root.to_s + file_name) do |file|
42
+ store(file_name, file)
43
+ end
44
+ end
45
+
46
+ open(manifest_path) do |file|
47
+ store('manifest-latest.yml', file)
48
+ end
49
+ end
50
+
51
+ def build_delta_manifest
52
+ return local_manifest unless remote_manifest
53
+
54
+ new_manifest_values = local_manifest.values - remote_manifest.values
55
+ local_manifest.invert.slice(*new_manifest_values).invert
56
+ end
57
+
58
+ def remote_manifest
59
+ @remote_manifest ||= YAML.load(AWS::S3::S3Object.find('manifest-latest.yml', bucket_name).value)
60
+ rescue AWS::S3::NoSuchKey
61
+ puts 'no remote existing manifest, uploading everything'
62
+ end
63
+
64
+ def local_manifest
65
+ @local_manifest ||= YAML.load_file('public/manifest.yml')
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,30 @@
1
+ module Embarista
2
+ module SassFunctions
3
+ def manifest_url(path)
4
+ Sass::Script::String.new("url(#{lookup_manifest_path(path)})")
5
+ end
6
+
7
+ private
8
+
9
+ def manifest
10
+ @_manifest ||= begin
11
+ # TODO: some switch so that this doesn't run in dev?
12
+ manifest_path = 'public/manifest.yml'
13
+ return {} unless File.exist?(manifest_path)
14
+ YAML.load_file(manifest_path)
15
+ end
16
+ end
17
+
18
+ def lookup_manifest_path(path)
19
+ if digest?
20
+ manifest.fetch(path.value)
21
+ else
22
+ path
23
+ end
24
+ end
25
+
26
+ def digest?
27
+ ENV.key?('RAKEP_DIGEST')
28
+ end
29
+ end
30
+ end
@@ -52,7 +52,7 @@ module Embarista
52
52
  pipeline.rake_application = Rake.application
53
53
  pipeline.setup
54
54
  end
55
- project.invoke_clean if clean_on_startup
55
+ project.invoke if clean_on_startup
56
56
  end
57
57
 
58
58
  def start_watching
@@ -130,7 +130,7 @@ module Embarista
130
130
  if added.size > 0 || removed.size > 0
131
131
  puts "BUILD (CLEAN) #{start}"
132
132
  begin
133
- project.invoke_clean
133
+ project.invoke
134
134
  rescue
135
135
  success = false
136
136
  puts "ERROR: #{$!.inspect}"
@@ -1,3 +1,3 @@
1
1
  module Embarista
2
- VERSION = '1.1.2'
2
+ VERSION = '1.1.3'
3
3
  end
@@ -1,8 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Embarista::Filters::ErbFilter do
4
- MemoryFileWrapper = Rake::Pipeline::SpecHelpers::MemoryFileWrapper
5
-
6
4
  let(:file_wrapper_class) { MemoryFileWrapper }
7
5
 
8
6
  let(:input_files) {
@@ -28,6 +26,8 @@ describe Embarista::Filters::ErbFilter do
28
26
  input.sub(/\.(erb)$/, '.txt')
29
27
  end
30
28
  filter.file_wrapper_class = file_wrapper_class
29
+ filter.manifest = MemoryManifest.new
30
+ filter.last_manifest = MemoryManifest.new
31
31
  filter.input_files = input_files
32
32
  filter.output_root = output_root
33
33
  filter.rake_application = rake_application
@@ -2,8 +2,6 @@ require 'spec_helper'
2
2
  require 'execjs'
3
3
 
4
4
  describe Embarista::Filters::PrecompileHandlebarsFilter do
5
- MemoryFileWrapper = Rake::Pipeline::SpecHelpers::MemoryFileWrapper
6
-
7
5
  let(:file_wrapper_class) { MemoryFileWrapper }
8
6
 
9
7
  let(:input_hbs) {
@@ -31,6 +29,8 @@ HBS
31
29
  let(:subject) {
32
30
  filter = described_class.new(:emberjs => emberjs, :handlebarsjs => handlebarsjs, :jquery_version => jquery_version)
33
31
  filter.file_wrapper_class = file_wrapper_class
32
+ filter.manifest = MemoryManifest.new
33
+ filter.last_manifest = MemoryManifest.new
34
34
  filter.input_files = input_files
35
35
  filter.output_root = output_root
36
36
  filter.rake_application = rake_application
@@ -1,8 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Embarista::Filters::RewriteMinispadeRequiresFilter do
4
- MemoryFileWrapper = Rake::Pipeline::SpecHelpers::MemoryFileWrapper
5
-
6
4
  let(:file_wrapper_class) { MemoryFileWrapper }
7
5
 
8
6
  let(:input_js) {
@@ -33,6 +31,8 @@ JS
33
31
  let(:subject) {
34
32
  filter = described_class.new(options)
35
33
  filter.file_wrapper_class = file_wrapper_class
34
+ filter.manifest = MemoryManifest.new
35
+ filter.last_manifest = MemoryManifest.new
36
36
  filter.input_files = input_files
37
37
  filter.output_root = output_root
38
38
  filter.rake_application = rake_application
data/spec/spec_helper.rb CHANGED
@@ -1,45 +1,26 @@
1
1
  require 'pry'
2
2
  require 'embarista'
3
+ require 'fileutils'
3
4
 
4
- class Rake::Pipeline
5
- module SpecHelpers
5
+ require "spec_helpers/memory_file_wrapper"
6
+ require "spec_helpers/memory_manifest"
6
7
 
7
- class MemoryFileWrapper < Struct.new(:root, :path, :encoding, :body)
8
- @@files = {}
9
- @@data = {}
10
-
11
- def self.files
12
- @@files
13
- end
14
-
15
- def self.data
16
- @@data
17
- end
18
-
19
- def with_encoding(new_encoding)
20
- self.class.new(root, path, new_encoding, body)
21
- end
22
-
23
- def fullpath
24
- File.join(root, path)
25
- end
8
+ RSpec.configure do |config|
9
+ original = Dir.pwd
26
10
 
27
- def create
28
- @@files[fullpath] = self
29
- self.body = ""
30
- yield
31
- end
11
+ config.include FileUtils
32
12
 
33
- def read
34
- body || @@data[fullpath] || ""
35
- end
13
+ def tmp
14
+ File.expand_path("../tmp", __FILE__)
15
+ end
36
16
 
37
- def write(contents)
38
- self.body << contents
39
- end
40
- end
17
+ config.before do
18
+ rm_rf(tmp)
19
+ mkdir_p(tmp)
20
+ Dir.chdir(tmp)
41
21
  end
42
- end
43
22
 
44
- RSpec.configure do |config|
23
+ config.after do
24
+ Dir.chdir(original)
25
+ end
45
26
  end
@@ -0,0 +1,27 @@
1
+ class MemoryFileWrapper < Struct.new(:root, :path, :encoding, :body)
2
+ @@files = {}
3
+
4
+ def self.files
5
+ @@files
6
+ end
7
+
8
+ def with_encoding(new_encoding)
9
+ self.class.new(root, path, new_encoding, body)
10
+ end
11
+
12
+ def fullpath
13
+ File.join(root, path)
14
+ end
15
+
16
+ def create
17
+ @@files[fullpath] = self
18
+ self.body = ""
19
+ yield
20
+ end
21
+
22
+ alias read body
23
+
24
+ def write(contents)
25
+ self.body << contents
26
+ end
27
+ end
@@ -0,0 +1,15 @@
1
+ class MemoryManifest
2
+ def initialize
3
+ @entries = {}
4
+ end
5
+
6
+ # Look up an entry by filename.
7
+ def [](key)
8
+ @entries[key]
9
+ end
10
+
11
+ # Set an entry
12
+ def []=(key, value)
13
+ @entries[key] = value
14
+ end
15
+ end
@@ -1,8 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Embarista::Filters::StripEmberAssertsFilter do
4
- MemoryFileWrapper = Rake::Pipeline::SpecHelpers::MemoryFileWrapper
5
-
6
4
  let(:file_wrapper_class) { MemoryFileWrapper }
7
5
 
8
6
  let(:input_js) {
@@ -31,6 +29,8 @@ JS
31
29
  let(:subject) {
32
30
  filter = described_class.new
33
31
  filter.file_wrapper_class = file_wrapper_class
32
+ filter.manifest = MemoryManifest.new
33
+ filter.last_manifest = MemoryManifest.new
34
34
  filter.input_files = input_files
35
35
  filter.output_root = output_root
36
36
  filter.rake_application = rake_application
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embarista
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,33 +10,33 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-11-16 00:00:00.000000000Z
13
+ date: 2012-11-23 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake-pipeline
17
- requirement: &2152752020 !ruby/object:Gem::Requirement
17
+ requirement: &2153730900 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
- - - ~>
20
+ - - ! '>'
21
21
  - !ruby/object:Gem::Version
22
22
  version: 0.6.0
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2152752020
25
+ version_requirements: *2153730900
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rake-pipeline-web-filters
28
- requirement: &2152750860 !ruby/object:Gem::Requirement
28
+ requirement: &2153729800 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
- - - ~>
31
+ - - ! '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: 0.6.0
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *2152750860
36
+ version_requirements: *2153729800
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: ruby_gntp
39
- requirement: &2152744080 !ruby/object:Gem::Requirement
39
+ requirement: &2153728700 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '0'
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *2152744080
47
+ version_requirements: *2153728700
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: listen
50
- requirement: &2152743100 !ruby/object:Gem::Requirement
50
+ requirement: &2153727140 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ! '>='
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: '0'
56
56
  type: :runtime
57
57
  prerelease: false
58
- version_requirements: *2152743100
58
+ version_requirements: *2153727140
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: colored
61
- requirement: &2152742440 !ruby/object:Gem::Requirement
61
+ requirement: &2153725500 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ! '>='
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: '0'
67
67
  type: :runtime
68
68
  prerelease: false
69
- version_requirements: *2152742440
69
+ version_requirements: *2153725500
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rb-fsevent
72
- requirement: &2152741880 !ruby/object:Gem::Requirement
72
+ requirement: &2153724240 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ! '>='
@@ -77,10 +77,10 @@ dependencies:
77
77
  version: '0'
78
78
  type: :runtime
79
79
  prerelease: false
80
- version_requirements: *2152741880
80
+ version_requirements: *2153724240
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: rspec
83
- requirement: &2152741400 !ruby/object:Gem::Requirement
83
+ requirement: &2153712800 !ruby/object:Gem::Requirement
84
84
  none: false
85
85
  requirements:
86
86
  - - ! '>='
@@ -88,10 +88,10 @@ dependencies:
88
88
  version: '0'
89
89
  type: :development
90
90
  prerelease: false
91
- version_requirements: *2152741400
91
+ version_requirements: *2153712800
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: rb-readline
94
- requirement: &2152740780 !ruby/object:Gem::Requirement
94
+ requirement: &2153710360 !ruby/object:Gem::Requirement
95
95
  none: false
96
96
  requirements:
97
97
  - - ! '>='
@@ -99,10 +99,10 @@ dependencies:
99
99
  version: '0'
100
100
  type: :development
101
101
  prerelease: false
102
- version_requirements: *2152740780
102
+ version_requirements: *2153710360
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: execjs
105
- requirement: &2152740340 !ruby/object:Gem::Requirement
105
+ requirement: &2153709380 !ruby/object:Gem::Requirement
106
106
  none: false
107
107
  requirements:
108
108
  - - ! '>='
@@ -110,7 +110,7 @@ dependencies:
110
110
  version: '0'
111
111
  type: :development
112
112
  prerelease: false
113
- version_requirements: *2152740340
113
+ version_requirements: *2153709380
114
114
  description: A collection of web filters for rake-pipeline
115
115
  email:
116
116
  - tech@yapp.us
@@ -120,19 +120,25 @@ extra_rdoc_files: []
120
120
  files:
121
121
  - .gitignore
122
122
  - .rspec
123
+ - .travis.yml
123
124
  - Gemfile
124
125
  - LICENSE
125
126
  - README.md
126
127
  - Rakefile
127
128
  - embarista.gemspec
128
129
  - lib/embarista.rb
130
+ - lib/embarista/digest_helper.rb
129
131
  - lib/embarista/filters.rb
130
132
  - lib/embarista/filters/erb_filter.rb
131
133
  - lib/embarista/filters/precompile_handlebars_filter.rb
132
134
  - lib/embarista/filters/rewrite_minispade_requires_filter.rb
133
135
  - lib/embarista/filters/strip_ember_asserts_filter.rb
136
+ - lib/embarista/git.rb
134
137
  - lib/embarista/helpers.rb
135
138
  - lib/embarista/javascript_pipeline.rb
139
+ - lib/embarista/manifest_helper.rb
140
+ - lib/embarista/s3sync.rb
141
+ - lib/embarista/sass_functions.rb
136
142
  - lib/embarista/server.rb
137
143
  - lib/embarista/version.rb
138
144
  - spec/erb_filter_spec.rb
@@ -140,6 +146,8 @@ files:
140
146
  - spec/precompile_handlebars_filter_spec.rb
141
147
  - spec/rewrite_minispade_requires_filter_spec.rb
142
148
  - spec/spec_helper.rb
149
+ - spec/spec_helpers/memory_file_wrapper.rb
150
+ - spec/spec_helpers/memory_manifest.rb
143
151
  - spec/strip_ember_asserts_filter_spec.rb
144
152
  - vendor/ember.js
145
153
  - vendor/handlebars.js
@@ -157,7 +165,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
157
165
  version: '0'
158
166
  segments:
159
167
  - 0
160
- hash: 4396691622434072912
168
+ hash: 1510070683163627783
161
169
  required_rubygems_version: !ruby/object:Gem::Requirement
162
170
  none: false
163
171
  requirements:
@@ -166,7 +174,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
166
174
  version: '0'
167
175
  segments:
168
176
  - 0
169
- hash: 4396691622434072912
177
+ hash: 1510070683163627783
170
178
  requirements: []
171
179
  rubyforge_project:
172
180
  rubygems_version: 1.8.10
@@ -180,4 +188,6 @@ test_files:
180
188
  - spec/precompile_handlebars_filter_spec.rb
181
189
  - spec/rewrite_minispade_requires_filter_spec.rb
182
190
  - spec/spec_helper.rb
191
+ - spec/spec_helpers/memory_file_wrapper.rb
192
+ - spec/spec_helpers/memory_manifest.rb
183
193
  - spec/strip_ember_asserts_filter_spec.rb