compass-rails 2.0.2 → 2.0.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.
- checksums.yaml +4 -4
- data/.travis.yml +5 -0
- data/CHANGELOG.md +7 -0
- data/Gemfile +2 -5
- data/README.md +5 -6
- data/Rakefile +2 -11
- data/gemfiles/rails31.gemfile +1 -0
- data/gemfiles/rails32.gemfile +1 -0
- data/gemfiles/rails40.gemfile +1 -0
- data/gemfiles/rails42.gemfile +1 -0
- data/lib/compass-rails.rb +1 -114
- data/lib/compass-rails/patches.rb +0 -3
- data/lib/compass-rails/patches/importer.rb +10 -12
- data/lib/compass-rails/patches/sass_importer.rb +16 -8
- data/lib/compass-rails/railties/3_1.rb +3 -10
- data/lib/compass-rails/railties/4_0.rb +0 -9
- data/lib/compass-rails/version.rb +1 -1
- data/test/{integrations/rails_test.rb → compass_rails_spec.rb} +21 -20
- data/test/fixtures/assets/images/numbers/sprite-1.png +0 -0
- data/test/fixtures/assets/images/numbers/sprite-2.png +0 -0
- data/test/fixtures/assets/stylesheets/application.css.scss +19 -0
- data/test/fixtures/assets/stylesheets/partials/_partial_1.scss +3 -0
- data/test/fixtures/assets/stylesheets/partials/_partial_2.scss +3 -0
- data/test/helpers/command_helper.rb +1 -14
- data/test/helpers/file_helper.rb +1 -22
- data/test/helpers/rails_helper.rb +25 -27
- data/test/helpers/rails_project.rb +21 -63
- data/test/test_helper.rb +8 -2
- metadata +14 -9
- data/lib/compass-rails/installer.rb +0 -30
- data/test/integrations/.gitkeep +0 -0
- data/test/units/.gitkeep +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9d3ea3227955811ea299dc8f915573ae37ee90f5
|
4
|
+
data.tar.gz: 24816da0d21eeef9ba77e4ddeb9e5d5deeda2f4a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5a20909a5341932b4e5b88067d3dcbba5eaec2e7e9ed5b4c166fc55772b73e377e5363e8e6f80fcfe25b1e9bd6a7613deb12973b5200b197a31ac072a11bd387
|
7
|
+
data.tar.gz: f85fc30a47c2a9f77774ecdab8bfab905acb73366d0f9e58f1485b8de03b7c488031bab426c08067795e358eeff5ddd163de6e4bff61029996693659ef541645
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Change log
|
2
2
|
|
3
|
+
## 2.0.2 - 2015-01-03
|
4
|
+
|
5
|
+
- Fixed test suite to test against Rails 3.1, 3.2, 4.0, 4.2 on Ruby 1.9.3, 2.0.0, 2.1.0, 2.2.0 and jruby-head. Issue #206
|
6
|
+
- Support up to sass-rails 5.0.1. Issue #198
|
7
|
+
- Fix sass_importer patches having incorrect method signatures. Issue #195
|
8
|
+
- Fixed incorrect path generation for sprites in Rails 4. Issue #190
|
9
|
+
|
3
10
|
## 2.0.0 - 2014-07-10
|
4
11
|
### Added
|
5
12
|
- Support for Rails 4.2
|
data/Gemfile
CHANGED
@@ -3,13 +3,10 @@ source 'https://rubygems.org'
|
|
3
3
|
# Specify your gem's dependencies in compass-rails.gemspec
|
4
4
|
gemspec
|
5
5
|
|
6
|
-
group :assets do
|
7
|
-
gem 'compass-blueprint'
|
8
|
-
end
|
9
|
-
|
10
6
|
group :test do
|
11
7
|
gem 'mocha'
|
12
|
-
gem
|
8
|
+
gem 'appraisal'
|
9
|
+
gem 'minitest'
|
13
10
|
end
|
14
11
|
|
15
12
|
unless ENV["CI"]
|
data/README.md
CHANGED
@@ -5,6 +5,7 @@
|
|
5
5
|
[](https://travis-ci.org/Compass/compass-rails)
|
6
6
|
[](https://codeclimate.com/github/Compass/compass-rails)
|
7
7
|
[](http://badge.fury.io/rb/compass-rails)
|
8
|
+
[](https://coveralls.io/r/Compass/compass-rails)
|
8
9
|
|
9
10
|
Compass rails is an adapter for the [Compass Stylesheet Authoring
|
10
11
|
Framework](http://compass-style.org) for [Ruby on Rails](http://rubyonrails.org/).
|
@@ -53,13 +54,11 @@ Use `application.css` to require files that use compass features. Ex:
|
|
53
54
|
|
54
55
|
### Configuration
|
55
56
|
|
56
|
-
|
57
|
-
|
57
|
+
Compass-rails is configured out of the box to work with Rails.
|
58
|
+
|
59
|
+
Advanced users can choose to add a `config/compass.rb` and take advantage of the [Compass configuration
|
58
60
|
reference](http://compass-style.org/help/documentation/configuration-reference/)
|
59
|
-
as is.
|
60
|
-
files, then you should understand that the compass configuration
|
61
|
-
options explained there will be methods and properties on the `config.compass`
|
62
|
-
configuration object exposed to rails within any configuration block.
|
61
|
+
as is.
|
63
62
|
|
64
63
|
### Installing Compass extensions
|
65
64
|
|
data/Rakefile
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
require 'rubygems'
|
3
3
|
require 'bundler'
|
4
4
|
Bundler.setup
|
5
|
-
require 'rake/dsl_definition'
|
5
|
+
require 'rake/dsl_definition'
|
6
6
|
|
7
7
|
require "bundler/gem_tasks"
|
8
8
|
require 'appraisal'
|
@@ -18,17 +18,8 @@ require 'fileutils'
|
|
18
18
|
Rake::TestTask.new :test do |t|
|
19
19
|
t.libs << 'lib'
|
20
20
|
t.libs << 'test'
|
21
|
-
test_files = FileList['test/**/*
|
21
|
+
test_files = FileList['test/**/*_{test,spec}.rb']
|
22
22
|
test_files.exclude('test/rails/*', 'test/haml/*')
|
23
23
|
t.test_files = test_files
|
24
24
|
t.verbose = true
|
25
25
|
end
|
26
|
-
|
27
|
-
Rake::TestTask.new :units do |t|
|
28
|
-
t.libs << 'lib'
|
29
|
-
t.libs << 'test'
|
30
|
-
test_files = FileList['test/units/**/*_test.rb']
|
31
|
-
test_files.exclude('test/rails/*', 'test/haml/*')
|
32
|
-
t.test_files = test_files
|
33
|
-
t.verbose = true
|
34
|
-
end
|
data/gemfiles/rails31.gemfile
CHANGED
data/gemfiles/rails32.gemfile
CHANGED
data/gemfiles/rails40.gemfile
CHANGED
data/gemfiles/rails42.gemfile
CHANGED
data/lib/compass-rails.rb
CHANGED
@@ -10,27 +10,6 @@ module CompassRails
|
|
10
10
|
|
11
11
|
extend self
|
12
12
|
|
13
|
-
def load_rails
|
14
|
-
return true if rails_loaded?
|
15
|
-
return if defined?(::Rails) && ::Rails.respond_to?(:application) && !::Rails.application.nil?
|
16
|
-
|
17
|
-
rails_path = Dir.pwd
|
18
|
-
if File.exists?(File.join(rails_path, 'config', 'application.rb'))
|
19
|
-
raise 'Rails application not found' if rails_config_path == '/'
|
20
|
-
rails_config_path = File.join(rails_config_path, '..')
|
21
|
-
#load the rails config
|
22
|
-
require "#{rails_config_path}/config/application.rb"
|
23
|
-
require 'sass-rails'
|
24
|
-
require 'sprockets/railtie'
|
25
|
-
@app ||= ::Rails.application.initialize!
|
26
|
-
require 'rails/engine'
|
27
|
-
return true
|
28
|
-
end
|
29
|
-
|
30
|
-
false
|
31
|
-
end
|
32
|
-
|
33
|
-
|
34
13
|
def setup_fake_rails_env_paths(sprockets_env)
|
35
14
|
return unless rails_loaded?
|
36
15
|
keys = ['app/assets', 'lib/assets', 'vendor/assets']
|
@@ -46,17 +25,14 @@ module CompassRails
|
|
46
25
|
end
|
47
26
|
|
48
27
|
def sass_config
|
49
|
-
load_rails
|
50
28
|
::Rails.application.config.sass
|
51
29
|
end
|
52
30
|
|
53
31
|
def sprockets
|
54
|
-
load_rails
|
55
32
|
@sprockets ||= ::Rails.application.assets
|
56
33
|
end
|
57
34
|
|
58
35
|
def context
|
59
|
-
load_rails
|
60
36
|
@context ||= begin
|
61
37
|
sprockets.version = ::Rails.env + "-#{sprockets.version}"
|
62
38
|
setup_fake_rails_env_paths(sprockets)
|
@@ -70,10 +46,6 @@ module CompassRails
|
|
70
46
|
end
|
71
47
|
end
|
72
48
|
|
73
|
-
def installer(*args)
|
74
|
-
CompassRails::Installer.new(*args)
|
75
|
-
end
|
76
|
-
|
77
49
|
def rails_loaded?
|
78
50
|
defined?(::Rails)
|
79
51
|
end
|
@@ -100,23 +72,10 @@ module CompassRails
|
|
100
72
|
end
|
101
73
|
|
102
74
|
def version_match(version)
|
103
|
-
|
104
|
-
return false
|
105
|
-
end
|
106
|
-
|
107
|
-
true
|
108
|
-
end
|
109
|
-
|
110
|
-
def booted!
|
111
|
-
CompassRails.const_set(:BOOTED, true)
|
112
|
-
end
|
113
|
-
|
114
|
-
def booted?
|
115
|
-
defined?(CompassRails::BOOTED) && CompassRails::BOOTED
|
75
|
+
!(rails_version =~ version).nil?
|
116
76
|
end
|
117
77
|
|
118
78
|
def configuration
|
119
|
-
load_rails
|
120
79
|
config = Compass::Configuration::Data.new('rails')
|
121
80
|
config.extend(CompassRails::Configuration)
|
122
81
|
config
|
@@ -126,50 +85,6 @@ module CompassRails
|
|
126
85
|
::Rails.application.config.assets.prefix
|
127
86
|
end
|
128
87
|
|
129
|
-
def env_production?
|
130
|
-
if defined?(::Rails) && ::Rails.respond_to?(:env)
|
131
|
-
::Rails.env.production?
|
132
|
-
elsif defined?(RAILS_ENV)
|
133
|
-
RAILS_ENV == "production"
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
def root
|
138
|
-
@root ||= begin
|
139
|
-
if defined?(::Rails) && ::Rails.respond_to?(:root)
|
140
|
-
::Rails.root
|
141
|
-
elsif defined?(RAILS_ROOT)
|
142
|
-
Pathname.new(RAILS_ROOT)
|
143
|
-
else
|
144
|
-
Pathname.new(Dir.pwd)
|
145
|
-
end
|
146
|
-
end
|
147
|
-
end
|
148
|
-
|
149
|
-
def check_for_double_boot!
|
150
|
-
if booted?
|
151
|
-
Compass::Util.compass_warn("Warning: Compass was booted twice. Compass-rails has got your back; please remove your compass initializer.")
|
152
|
-
else
|
153
|
-
booted!
|
154
|
-
end
|
155
|
-
end
|
156
|
-
|
157
|
-
def sass_plugin_enabled?
|
158
|
-
unless rails31?
|
159
|
-
defined?(Sass::Plugin) && !Sass::Plugin.options[:never_update]
|
160
|
-
end
|
161
|
-
end
|
162
|
-
|
163
|
-
# Rails projects without asset pipeline use this in their compass initializer.
|
164
|
-
def initialize!(config = nil)
|
165
|
-
check_for_double_boot!
|
166
|
-
config ||= Compass.detect_configuration_file(root)
|
167
|
-
Compass.add_project_configuration(config, :project_type => :rails)
|
168
|
-
Compass.discover_extensions!
|
169
|
-
Compass.configure_sass_plugin!
|
170
|
-
Compass.handle_configuration_change! if sass_plugin_enabled?
|
171
|
-
end
|
172
|
-
|
173
88
|
def configure_rails!(app)
|
174
89
|
return unless app.config.respond_to?(:sass)
|
175
90
|
sass_config = app.config.sass
|
@@ -192,31 +107,6 @@ module CompassRails
|
|
192
107
|
end
|
193
108
|
end
|
194
109
|
|
195
|
-
def boot_config
|
196
|
-
config = begin
|
197
|
-
if (config_file = Compass.detect_configuration_file) &&
|
198
|
-
(config_data = Compass.configuration_for(config_file))
|
199
|
-
config_data
|
200
|
-
else
|
201
|
-
Compass::Configuration::Data.new("compass_rails_boot")
|
202
|
-
end
|
203
|
-
end
|
204
|
-
|
205
|
-
config.tap do |c|
|
206
|
-
c.top_level.project_type = :rails
|
207
|
-
end
|
208
|
-
end
|
209
|
-
|
210
|
-
def asset_pipeline_enabled?
|
211
|
-
return false unless rails_loaded? && ::Rails.respond_to?(:application) && !::Rails.application.nil?
|
212
|
-
rails_config = ::Rails.application.config
|
213
|
-
if rails_config.respond_to?(:assets)
|
214
|
-
rails_config.assets.enabled != false
|
215
|
-
else
|
216
|
-
false
|
217
|
-
end
|
218
|
-
end
|
219
|
-
|
220
110
|
private
|
221
111
|
|
222
112
|
# sets the sass config value only if the corresponding compass-based setting
|
@@ -231,10 +121,7 @@ end
|
|
231
121
|
|
232
122
|
if defined?(::Rails)
|
233
123
|
Compass::AppIntegration.register(:rails, "::CompassRails")
|
234
|
-
Compass.add_configuration(CompassRails.boot_config)
|
235
|
-
|
236
124
|
require "compass-rails/patches"
|
237
125
|
require "compass-rails/railties"
|
238
|
-
require "compass-rails/installer"
|
239
126
|
end
|
240
127
|
|
@@ -4,18 +4,16 @@ module Compass
|
|
4
4
|
attr_accessor :sass_options
|
5
5
|
STYLESHEET = /stylesheet/
|
6
6
|
def sass_options
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
@sass_options[:load_paths] << ::Sass::Rails::Importer.new(context)
|
18
|
-
end
|
7
|
+
@sass_options[:custom] ||= {}
|
8
|
+
@sass_options[:custom] = {:resolver => ::Sass::Rails::Resolver.new(CompassRails.context)}
|
9
|
+
@sass_options[:load_paths] ||= []
|
10
|
+
unless @sass_options[:load_paths].any? {|k| k.is_a?(::Sass::Rails::Importer) }
|
11
|
+
::Rails.application.assets.paths.each do |path|
|
12
|
+
next unless path.to_s =~ STYLESHEET
|
13
|
+
Dir["#{path}/**/*"].each do |pathname|
|
14
|
+
# args are: sprockets environment, the logical_path ex. 'stylesheets', and the full path name for the render
|
15
|
+
context = ::CompassRails.context.new(::Rails.application.assets, File.basename(path), Pathname.new(pathname))
|
16
|
+
@sass_options[:load_paths] << ::Sass::Rails::Importer.new(context)
|
19
17
|
end
|
20
18
|
end
|
21
19
|
end
|
@@ -34,7 +34,15 @@ klass.class_eval do
|
|
34
34
|
engine = ::Sass::Engine.new(data, options)
|
35
35
|
|
36
36
|
engine.dependencies.map do |dependency|
|
37
|
-
|
37
|
+
filename = dependency.options[:filename]
|
38
|
+
if filename.include?('*') # Handle sprite globs
|
39
|
+
image_path = Rails.root.join(Compass.configuration.images_dir).to_s
|
40
|
+
Dir[File.join(image_path, filename)].each do |f|
|
41
|
+
context.depend_on(f)
|
42
|
+
end
|
43
|
+
else
|
44
|
+
context.depend_on(filename)
|
45
|
+
end
|
38
46
|
end
|
39
47
|
|
40
48
|
engine.render
|
@@ -57,17 +65,17 @@ klass.class_eval do
|
|
57
65
|
self.class.parent::SassImporter.new(path)
|
58
66
|
else
|
59
67
|
self.class.parent::SassImporter.new(context, path)
|
60
|
-
end
|
68
|
+
end
|
61
69
|
end
|
62
70
|
|
63
71
|
def sprockets_cache_store
|
64
72
|
case Rails.application.config.assets.cache_store
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
73
|
+
when :null_store
|
74
|
+
Sprockets::Cache::NullStore.new
|
75
|
+
when :memory_store, :mem_cache_store
|
76
|
+
Sprockets::Cache::MemoryStore.new
|
77
|
+
else
|
78
|
+
Sprockets::Cache::FileStore.new(Dir::tmpdir)
|
71
79
|
end
|
72
80
|
end
|
73
81
|
end
|
@@ -3,16 +3,9 @@ module CompassRails
|
|
3
3
|
|
4
4
|
initializer "compass.initialize_rails", :group => :all do |app|
|
5
5
|
require 'compass'
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
# that came via the rails boot process.
|
10
|
-
CompassRails.check_for_double_boot!
|
11
|
-
Compass.discover_extensions!
|
12
|
-
CompassRails.configure_rails!(app)
|
13
|
-
else
|
14
|
-
CompassRails.initialize!(app.config.compass)
|
15
|
-
end
|
6
|
+
require 'compass-rails/patches/3_1'
|
7
|
+
Compass.discover_extensions!
|
8
|
+
CompassRails.configure_rails!(app)
|
16
9
|
end
|
17
10
|
|
18
11
|
config.compass = begin
|
@@ -4,9 +4,6 @@ module CompassRails
|
|
4
4
|
initializer "compass.initialize_rails", :group => :all do |app|
|
5
5
|
require 'compass'
|
6
6
|
require 'compass-rails/patches/4_0'
|
7
|
-
# Configure compass for use within rails, and provide the project configuration
|
8
|
-
# that came via the rails boot process.
|
9
|
-
CompassRails.check_for_double_boot!
|
10
7
|
Compass.discover_extensions!
|
11
8
|
CompassRails.configure_rails!(app)
|
12
9
|
end
|
@@ -26,12 +23,6 @@ module CompassRails
|
|
26
23
|
caller.grep(%r{/sprockets/rails/task.rb}).any? && #OMG HAX - check if we're being precompiled
|
27
24
|
Compass.configuration.generated_images_path[Compass.configuration.images_path.to_s] # if the generated images path is not in the assets images directory, we don't have to do these backflips
|
28
25
|
|
29
|
-
# Clear entries in Hike::Index for this sprite's directory.
|
30
|
-
# This makes sure the asset can be found by find_assets
|
31
|
-
trail = Rails.application.assets.send(:trail)
|
32
|
-
trail.instance_variable_get(:@entries).delete(File.dirname(filename))
|
33
|
-
trail.instance_variable_get(:@stats).delete(filename)
|
34
|
-
|
35
26
|
pathname = Pathname.new(filename)
|
36
27
|
logical_path = pathname.relative_path_from(Pathname.new(Compass.configuration.images_path))
|
37
28
|
asset = Rails.application.assets.find_asset(logical_path)
|
@@ -1,36 +1,37 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
|
3
|
+
describe CompassRails do
|
4
4
|
include CompassRails::Test::RailsHelpers
|
5
5
|
|
6
|
-
|
6
|
+
it "compiles a basic compass stylesheet" do
|
7
7
|
within_rails_app('test_railtie') do |project|
|
8
|
+
project.setup_asset_fixtures!
|
9
|
+
|
8
10
|
assert project.boots?
|
9
|
-
end
|
10
|
-
end
|
11
11
|
|
12
|
-
|
13
|
-
within_rails_app('test_railtie') do |project|
|
14
|
-
rm(project.file("app/assets/javascripts/application.js"))
|
15
|
-
rm(project.file("app/assets/stylesheets/application.css"))
|
16
|
-
touch(project.file("app/assets/stylesheets/application.css.sass"))
|
17
|
-
assert project.precompiles?, "Missing compiled css after assets:precompile"
|
18
|
-
end
|
19
|
-
end
|
12
|
+
project.precompile!
|
20
13
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
14
|
+
project.compiled_stylesheet 'public/assets/application*.css' do |css|
|
15
|
+
refute css.empty?
|
16
|
+
assert_match 'body container', css
|
17
|
+
assert_match "-webkit-linear-gradient", css
|
18
|
+
assert_match "-moz-border-radius", css
|
19
|
+
assert_match '.numbers-sprite-1', css
|
20
|
+
assert_match '.numbers-sprite-2', css
|
21
|
+
end
|
26
22
|
end
|
27
23
|
end
|
28
24
|
|
29
|
-
|
25
|
+
it "supports rails config arguments" do
|
30
26
|
within_rails_app('test_railtie') do |project|
|
27
|
+
assert_equal "scss", project.rails_property("sass.preferred_syntax")
|
31
28
|
assert_equal "public/assets", project.rails_property("compass.css_dir")
|
29
|
+
|
30
|
+
project.set_rails('sass.preferred_syntax', :sass)
|
32
31
|
project.set_rails('compass.css_dir', "public/stylesheets")
|
32
|
+
|
33
|
+
assert_equal "sass", project.rails_property("sass.preferred_syntax")
|
33
34
|
assert_equal "public/stylesheets", project.rails_property("compass.css_dir")
|
34
35
|
end
|
35
|
-
end
|
36
|
-
end
|
36
|
+
end unless ENV['DEBUG_COMPILE']
|
37
|
+
end
|
Binary file
|
Binary file
|
@@ -0,0 +1,19 @@
|
|
1
|
+
// Import Compass
|
2
|
+
@import "compass";
|
3
|
+
|
4
|
+
// Glob import SCSS partials
|
5
|
+
@import "partials/*";
|
6
|
+
|
7
|
+
// Import Sprites and Inline them to save
|
8
|
+
$numbers-inline: true;
|
9
|
+
@import "numbers/sprite-*.png";
|
10
|
+
@include all-numbers-sprites;
|
11
|
+
|
12
|
+
// Try out some compass stuff
|
13
|
+
body{
|
14
|
+
@include background-image(linear-gradient(white, #aaaaaa));
|
15
|
+
|
16
|
+
container{
|
17
|
+
@include border-radius(4px, 4px);
|
18
|
+
}
|
19
|
+
}
|
@@ -75,14 +75,10 @@ class CompassRails::Test::CommandRunner
|
|
75
75
|
end
|
76
76
|
|
77
77
|
def run
|
78
|
-
|
79
|
-
with_clean_env do
|
80
|
-
%x{#{@command}}
|
81
|
-
end
|
78
|
+
with_clean_env { %x{#{@command}} }
|
82
79
|
end
|
83
80
|
|
84
81
|
def exec
|
85
|
-
announce
|
86
82
|
with_clean_env { Kernel.exec(@command) }
|
87
83
|
end
|
88
84
|
|
@@ -96,15 +92,6 @@ class CompassRails::Test::CommandRunner
|
|
96
92
|
restore_env
|
97
93
|
end
|
98
94
|
|
99
|
-
def announce
|
100
|
-
return
|
101
|
-
if @gemfile
|
102
|
-
puts ">> BUNDLE_GEMFILE=#{@gemfile} #{@command}"
|
103
|
-
else
|
104
|
-
puts ">> #{@command}"
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
95
|
def unset_bundler_env_vars
|
109
96
|
BUNDLER_ENV_VARS.each do |key|
|
110
97
|
@original_env[key] = ENV[key]
|
data/test/helpers/file_helper.rb
CHANGED
@@ -3,23 +3,7 @@ module CompassRails
|
|
3
3
|
module FileHelper
|
4
4
|
include DebugHelper
|
5
5
|
|
6
|
-
|
7
|
-
debug "Creating Directory: #{dir}"
|
8
|
-
::FileUtils.mkdir_p dir
|
9
|
-
assert File.directory?(dir), "mkdir_p: #{dir} failed"
|
10
|
-
end
|
11
|
-
|
12
|
-
def rm(path)
|
13
|
-
debug "Removing: #{path}"
|
14
|
-
::FileUtils.rm(path)
|
15
|
-
assert !File.file?(path), "rm: #{path} failed"
|
16
|
-
end
|
17
|
-
|
18
|
-
def rm_rf(path)
|
19
|
-
debug "Removing: #{path}"
|
20
|
-
::FileUtils.rm_rf(path)
|
21
|
-
assert !File.directory?(path), "rm_rf: #{path} failed"
|
22
|
-
end
|
6
|
+
delegate :mkdir_p, :rm, :rm_rf, :cp_r, :touch, to: ::FileUtils
|
23
7
|
|
24
8
|
def cd(path, &block)
|
25
9
|
debug "Entering: #{path}"
|
@@ -32,11 +16,6 @@ module CompassRails
|
|
32
16
|
File.open(file_name, 'w') { |file| file << content }
|
33
17
|
end
|
34
18
|
|
35
|
-
def touch(file)
|
36
|
-
debug "Touching File: #{file}"
|
37
|
-
::FileUtils.touch(file)
|
38
|
-
end
|
39
|
-
|
40
19
|
def inject_into_file(file_name, replacement, position, anchor)
|
41
20
|
case position
|
42
21
|
when :after
|
@@ -25,39 +25,37 @@ module CompassRails
|
|
25
25
|
RAILS_3_1 => GEMFILES_DIR.join("rails31.gemfile").to_s
|
26
26
|
}
|
27
27
|
|
28
|
-
GENERATOR_OPTIONS =
|
28
|
+
GENERATOR_OPTIONS = ['-q', '-G', '-O', '--skip-bundle']
|
29
29
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
run_command("rails #{options.join(' ')}", GEMFILES[rails_version])
|
35
|
-
end
|
30
|
+
def rails_command(options)
|
31
|
+
debug cmd = "rails #{options.join(' ')}"
|
32
|
+
run_command(cmd, GEMFILES[rails_version])
|
33
|
+
end
|
36
34
|
|
37
|
-
|
38
|
-
|
39
|
-
|
35
|
+
def rails_version
|
36
|
+
@rails_version ||= VERSION_LOOKUP.detect { |version, regex| CompassRails.version_match(regex) }.first
|
37
|
+
end
|
40
38
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
39
|
+
# Generate a rails application without polluting our current set of requires
|
40
|
+
# with the rails libraries. This will allow testing against multiple versions of rails
|
41
|
+
# by manipulating the load path.
|
42
|
+
def generate_rails_app(name, options = [])
|
43
|
+
options += GENERATOR_OPTIONS
|
44
|
+
rails_command(['new', name, *options])
|
45
|
+
end
|
48
46
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
47
|
+
def within_rails_app(named, &block)
|
48
|
+
dir = "#{named}-#{rails_version}"
|
49
|
+
rm_rf File.join(WORKING_DIR, dir)
|
50
|
+
mkdir_p WORKING_DIR
|
51
|
+
cd(WORKING_DIR) do
|
52
|
+
generate_rails_app(dir, [])
|
53
|
+
cd(dir) do
|
54
|
+
yield RailsProject.new(File.join(WORKING_DIR, dir), rails_version)
|
55
|
+
end
|
57
56
|
end
|
57
|
+
rm_rf File.join(WORKING_DIR, dir) unless ENV['DEBUG_COMPILE']
|
58
58
|
end
|
59
|
-
rm_rf File.join(WORKING_DIR, dir)
|
60
|
-
end
|
61
59
|
|
62
60
|
end
|
63
61
|
end
|
@@ -7,20 +7,13 @@ module CompassRails
|
|
7
7
|
include RailsHelpers
|
8
8
|
include Kernal::Captures
|
9
9
|
|
10
|
-
|
11
|
-
GEMFILE = 'Gemfile'
|
12
|
-
GEMFILE_LOCK = 'Gemfile.lock'
|
13
|
-
ENVIRONMENT = 'config/environment.rb'
|
14
|
-
COMPASS_CONFIG = 'config/compass.rb'
|
15
10
|
APPLICATION_FILE = 'config/application.rb'
|
16
|
-
BOOT_FILE = 'config/boot.rb'
|
17
11
|
|
18
|
-
attr_reader :directory, :version
|
12
|
+
attr_reader :directory, :version
|
19
13
|
|
20
|
-
def initialize(directory, version
|
14
|
+
def initialize(directory, version)
|
21
15
|
@directory = Pathname.new(directory)
|
22
16
|
@version = version
|
23
|
-
@asset_pipeline_enabled = asset_pipeline_enabled
|
24
17
|
end
|
25
18
|
|
26
19
|
## FILE METHODS
|
@@ -37,61 +30,40 @@ module CompassRails
|
|
37
30
|
directory.join(path)
|
38
31
|
end
|
39
32
|
|
40
|
-
def has_file?(file)
|
41
|
-
File.exist? directory.join(file)
|
42
|
-
end
|
43
|
-
|
44
|
-
def screen_file
|
45
|
-
if asset_pipeline_enabled
|
46
|
-
return directory.join('app', 'assets', 'stylesheets', 'screen.css.scss')
|
47
|
-
else
|
48
|
-
return directory.join('app', 'assets', 'stylesheets','screen.scss')
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
def has_screen_file?
|
53
|
-
screen_file.exist?
|
54
|
-
end
|
55
|
-
|
56
|
-
def has_compass_import?
|
57
|
-
File.read(screen_file).include?("compass/reset")
|
58
|
-
end
|
59
|
-
|
60
|
-
def has_config?
|
61
|
-
directory.join('config', 'compass.rb').exist?
|
62
|
-
end
|
63
|
-
|
64
33
|
# RAILS METHODS
|
65
34
|
|
66
|
-
def rails3?
|
67
|
-
directory.join(APPLICATION_FILE).exist?
|
68
|
-
end
|
69
|
-
|
70
35
|
def boots?
|
71
36
|
rails_property("compass.project_type") == "rails"
|
72
37
|
end
|
73
38
|
|
74
|
-
def
|
39
|
+
def precompile!
|
75
40
|
run_command("rake assets:precompile", GEMFILES[version])
|
76
|
-
!Dir[file("public/assets/application*.css")].empty?
|
77
41
|
end
|
78
42
|
|
79
|
-
def
|
80
|
-
|
43
|
+
def setup_asset_fixtures!
|
44
|
+
rm_rf file("app/assets")
|
45
|
+
cp_r CompassRails::Test.root.join('test', 'fixtures', 'assets'), file("app")
|
81
46
|
end
|
82
47
|
|
83
|
-
|
48
|
+
def precompiled?(path)
|
49
|
+
!Dir[asset_path(path)].empty?
|
50
|
+
end
|
84
51
|
|
85
|
-
def
|
86
|
-
|
52
|
+
def compiled_stylesheet(path, &block)
|
53
|
+
File.open(asset_path(path)).read.tap do |css|
|
54
|
+
debug(css)
|
55
|
+
yield css if block_given?
|
56
|
+
end
|
87
57
|
end
|
88
58
|
|
89
|
-
def
|
90
|
-
file
|
91
|
-
|
92
|
-
touch file
|
59
|
+
def asset_path(path_pattern)
|
60
|
+
Dir[file(path_pattern)].first.tap do |asset|
|
61
|
+
raise 'Asset not found' if asset.nil?
|
93
62
|
end
|
94
|
-
|
63
|
+
end
|
64
|
+
|
65
|
+
def rails_property(key)
|
66
|
+
rails_command(['runner', "'puts Rails.application.config.#{key}'"]).chomp
|
95
67
|
end
|
96
68
|
|
97
69
|
def set_rails(property, value)
|
@@ -99,20 +71,6 @@ module CompassRails
|
|
99
71
|
inject_into_file(directory.join(APPLICATION_FILE), value, :after, 'class Application < Rails::Application')
|
100
72
|
end
|
101
73
|
|
102
|
-
private
|
103
|
-
|
104
|
-
## GEM METHODS
|
105
|
-
|
106
|
-
def add_to_gemfile(name, requirements)
|
107
|
-
gemfile = directory.join(GEMFILE)
|
108
|
-
debug "Adding gem #{name} to file: #{gemfile}"
|
109
|
-
if requirements
|
110
|
-
gem_string = " gem '#{name}', #{requirements}\n"
|
111
|
-
else
|
112
|
-
gem_string = " gem '#{name}'\n"
|
113
|
-
end
|
114
|
-
inject_at_bottom(gemfile, gem_string)
|
115
|
-
end
|
116
74
|
end
|
117
75
|
end
|
118
76
|
end
|
data/test/test_helper.rb
CHANGED
@@ -1,9 +1,14 @@
|
|
1
|
-
require '
|
1
|
+
require 'minitest/autorun'
|
2
2
|
require 'compass-rails'
|
3
|
+
require 'active_support/all'
|
3
4
|
|
4
5
|
module CompassRails
|
5
6
|
module Test
|
6
7
|
ROOT_PATH = File.expand_path('../../', __FILE__)
|
8
|
+
|
9
|
+
def self.root
|
10
|
+
Pathname.new(ROOT_PATH)
|
11
|
+
end
|
7
12
|
end
|
8
13
|
end
|
9
14
|
|
@@ -11,4 +16,5 @@ end
|
|
11
16
|
require File.join(File.expand_path('../', __FILE__), 'helpers', "#{helper}_helper")
|
12
17
|
end
|
13
18
|
|
14
|
-
require File.join(File.expand_path('../', __FILE__), 'helpers', "rails_project")
|
19
|
+
require File.join(File.expand_path('../', __FILE__), 'helpers', "rails_project")
|
20
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: compass-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Davis
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-01-
|
13
|
+
date: 2015-01-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: compass
|
@@ -79,7 +79,6 @@ files:
|
|
79
79
|
- gemfiles/rails42.gemfile
|
80
80
|
- lib/compass-rails.rb
|
81
81
|
- lib/compass-rails/configuration.rb
|
82
|
-
- lib/compass-rails/installer.rb
|
83
82
|
- lib/compass-rails/patches.rb
|
84
83
|
- lib/compass-rails/patches/3_1.rb
|
85
84
|
- lib/compass-rails/patches/4_0.rb
|
@@ -93,16 +92,19 @@ files:
|
|
93
92
|
- lib/compass-rails/railties/4_0.rb
|
94
93
|
- lib/compass-rails/version.rb
|
95
94
|
- sache.json
|
95
|
+
- test/compass_rails_spec.rb
|
96
96
|
- test/fixtures/.gitkeep
|
97
|
+
- test/fixtures/assets/images/numbers/sprite-1.png
|
98
|
+
- test/fixtures/assets/images/numbers/sprite-2.png
|
99
|
+
- test/fixtures/assets/stylesheets/application.css.scss
|
100
|
+
- test/fixtures/assets/stylesheets/partials/_partial_1.scss
|
101
|
+
- test/fixtures/assets/stylesheets/partials/_partial_2.scss
|
97
102
|
- test/helpers/command_helper.rb
|
98
103
|
- test/helpers/debug_helper.rb
|
99
104
|
- test/helpers/file_helper.rb
|
100
105
|
- test/helpers/rails_helper.rb
|
101
106
|
- test/helpers/rails_project.rb
|
102
|
-
- test/integrations/.gitkeep
|
103
|
-
- test/integrations/rails_test.rb
|
104
107
|
- test/test_helper.rb
|
105
|
-
- test/units/.gitkeep
|
106
108
|
homepage: https://github.com/Compass/compass-rails
|
107
109
|
licenses:
|
108
110
|
- MIT
|
@@ -128,14 +130,17 @@ signing_key:
|
|
128
130
|
specification_version: 4
|
129
131
|
summary: Integrate Compass into Rails 3.0 and up.
|
130
132
|
test_files:
|
133
|
+
- test/compass_rails_spec.rb
|
131
134
|
- test/fixtures/.gitkeep
|
135
|
+
- test/fixtures/assets/images/numbers/sprite-1.png
|
136
|
+
- test/fixtures/assets/images/numbers/sprite-2.png
|
137
|
+
- test/fixtures/assets/stylesheets/application.css.scss
|
138
|
+
- test/fixtures/assets/stylesheets/partials/_partial_1.scss
|
139
|
+
- test/fixtures/assets/stylesheets/partials/_partial_2.scss
|
132
140
|
- test/helpers/command_helper.rb
|
133
141
|
- test/helpers/debug_helper.rb
|
134
142
|
- test/helpers/file_helper.rb
|
135
143
|
- test/helpers/rails_helper.rb
|
136
144
|
- test/helpers/rails_project.rb
|
137
|
-
- test/integrations/.gitkeep
|
138
|
-
- test/integrations/rails_test.rb
|
139
145
|
- test/test_helper.rb
|
140
|
-
- test/units/.gitkeep
|
141
146
|
has_rdoc:
|
@@ -1,30 +0,0 @@
|
|
1
|
-
module CompassRails
|
2
|
-
class Installer < Compass::Installers::ManifestInstaller
|
3
|
-
|
4
|
-
SASS_FILE_REGEX = %r{(.*)(?:\.css)?\.(sass|scss)}
|
5
|
-
|
6
|
-
def completed_configuration
|
7
|
-
@completed_configuration ||= CompassRails.configuration
|
8
|
-
end
|
9
|
-
|
10
|
-
def install_stylesheet(from, to, options)
|
11
|
-
if CompassRails.rails_loaded? && CompassRails.asset_pipeline_enabled?
|
12
|
-
_, name, ext = SASS_FILE_REGEX.match(to).to_a
|
13
|
-
to = "#{name}.css.#{ext}"
|
14
|
-
end
|
15
|
-
super(from, to, options)
|
16
|
-
end
|
17
|
-
|
18
|
-
def write_configuration_files
|
19
|
-
config_file = CompassRails.root.join('config', 'compass.rb')
|
20
|
-
unless config_file.exist?
|
21
|
-
write_file config_file.to_s, CompassRails.configuration.serialize
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def prepare
|
26
|
-
write_configuration_files
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
end
|
data/test/integrations/.gitkeep
DELETED
File without changes
|
data/test/units/.gitkeep
DELETED
File without changes
|