Skip to content

Commit bf4a122

Browse files
committed
Merge pull request #184 from bolandrm/new_files_get_ignored
ensure parents of globbed files are added to dependencies
2 parents 6d4e551 + 17f839c commit bf4a122

File tree

3 files changed

+37
-3
lines changed

3 files changed

+37
-3
lines changed

lib/sass/rails/importer.rb

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ def glob_imports(glob, base_pathname, options)
4747
contents = ""
4848
each_globbed_file(glob, base_pathname.dirname, options) do |filename|
4949
if File.directory?(filename)
50-
context.depend_on(filename)
50+
depend_on(filename)
5151
elsif context.asset_requirable?(filename)
52-
context.depend_on(filename)
52+
depend_on(filename)
5353
contents << "@import #{Pathname.new(filename).relative_path_from(base_pathname.dirname).to_s.inspect};\n"
5454
end
5555
end
@@ -63,6 +63,19 @@ def glob_imports(glob, base_pathname, options)
6363

6464
private
6565

66+
def depend_on(filename)
67+
context.depend_on(filename)
68+
context.depend_on(globbed_file_parent(filename))
69+
end
70+
71+
def globbed_file_parent(filename)
72+
if File.directory?(filename)
73+
File.expand_path('..', filename)
74+
else
75+
File.dirname(filename)
76+
end
77+
end
78+
6679
def engine_from_path(name, dir, options)
6780
full_filename, syntax = Sass::Util.destructure(find_real_file(dir, name, options))
6881
return unless full_filename && File.readable?(full_filename)

test/sass_rails_test.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,23 @@ class SassRailsTest < Sass::Rails::TestCase
8989
assert_match /default-old-css/, css_output
9090
end
9191

92+
test 'globbed imports work when new file is added' do
93+
project = 'scss_project'
94+
filename = 'application.css.scss'
95+
96+
within_rails_app(project) do |tmpdir|
97+
asset_output(filename)
98+
99+
new_file = File.join(tmpdir, 'app', 'assets', 'stylesheets', 'globbed', 'new.scss')
100+
File.open(new_file, 'w') do |file|
101+
file.puts '.new-file-test { color: #000; }'
102+
end
103+
104+
css_output = asset_output(filename)
105+
assert_match /new-file-test/, css_output
106+
end
107+
end
108+
92109
test 'sass asset paths work' do
93110
css_output = sprockets_render('scss_project', 'application.css.scss')
94111
assert_match %r{asset-path:\s*"/assets/rails.png"}, css_output, 'asset-path:\s*"/assets/rails.png"'

test/support/sass_rails_test_case.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,14 @@ module TestAssetPaths
3737

3838
def sprockets_render(project, filename)
3939
within_rails_app(project) do
40-
runcmd "ruby script/rails runner 'puts Rails.application.assets[#{filename.inspect}]'"
40+
asset_output(filename)
4141
end
4242
end
4343

44+
def asset_output(filename)
45+
runcmd "ruby script/rails runner 'puts Rails.application.assets[#{filename.inspect}]'"
46+
end
47+
4448
def assert_file_exists(filename)
4549
assert File.exists?(filename), "could not find #{filename}. PWD=#{Dir.pwd}\nDid find: #{Dir.glob(File.dirname(filename)+"/*").join(", ")}"
4650
end

0 commit comments

Comments
 (0)