sass-rails 3.1.0.rc.1 → 3.1.0.rc.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.
Files changed (125) hide show
  1. data/Gemfile +3 -4
  2. data/README.markdown +52 -0
  3. data/lib/rails/generators/sass/assets/assets_generator.rb +1 -1
  4. data/lib/rails/generators/sass/assets/templates/stylesheet.css.sass +4 -1
  5. data/lib/rails/generators/sass_scaffold.rb +2 -1
  6. data/lib/rails/generators/scss/assets/assets_generator.rb +1 -1
  7. data/lib/rails/generators/scss/assets/templates/stylesheet.css.scss +5 -1
  8. data/lib/sass-rails.rb +1 -31
  9. data/lib/sass/rails.rb +11 -0
  10. data/lib/sass/rails/compressor.rb +15 -0
  11. data/lib/sass/rails/importer.rb +128 -0
  12. data/lib/sass/rails/monkey_patches.rb +20 -0
  13. data/lib/sass/rails/railtie.rb +43 -0
  14. data/lib/sass/rails/template_handlers.rb +61 -0
  15. data/lib/{sass-rails → sass/rails}/version.rb +1 -1
  16. data/sass-rails.gemspec +8 -7
  17. data/test/fixtures/sass_project/.gitignore +5 -0
  18. data/test/fixtures/sass_project/Gemfile +7 -0
  19. data/test/fixtures/sass_project/README +261 -0
  20. data/test/{dummy → fixtures/sass_project}/Rakefile +2 -2
  21. data/test/fixtures/sass_project/app/assets/images/rails.png +0 -0
  22. data/test/fixtures/sass_project/app/assets/javascripts/application.js +9 -0
  23. data/test/fixtures/sass_project/app/assets/stylesheets/application.css +7 -0
  24. data/test/{dummy → fixtures/sass_project}/app/controllers/application_controller.rb +0 -0
  25. data/test/{dummy → fixtures/sass_project}/app/helpers/application_helper.rb +0 -0
  26. data/test/{dummy/public/stylesheets → fixtures/sass_project/app/mailers}/.gitkeep +0 -0
  27. data/test/{dummy/log/development.log → fixtures/sass_project/app/models/.gitkeep} +0 -0
  28. data/test/fixtures/sass_project/app/views/layouts/application.html.erb +14 -0
  29. data/test/{dummy → fixtures/sass_project}/config.ru +1 -1
  30. data/test/fixtures/sass_project/config/application.rb +52 -0
  31. data/test/fixtures/sass_project/config/boot.rb +6 -0
  32. data/test/{dummy → fixtures/sass_project}/config/database.yml +3 -0
  33. data/test/{dummy → fixtures/sass_project}/config/environment.rb +1 -1
  34. data/test/{dummy → fixtures/sass_project}/config/environments/development.rb +5 -4
  35. data/test/{dummy → fixtures/sass_project}/config/environments/production.rb +18 -13
  36. data/test/{dummy → fixtures/sass_project}/config/environments/test.rb +6 -2
  37. data/test/{dummy → fixtures/sass_project}/config/initializers/backtrace_silencers.rb +0 -0
  38. data/test/{dummy → fixtures/sass_project}/config/initializers/inflections.rb +0 -0
  39. data/test/{dummy → fixtures/sass_project}/config/initializers/mime_types.rb +0 -0
  40. data/test/{dummy → fixtures/sass_project}/config/initializers/secret_token.rb +1 -1
  41. data/test/{dummy → fixtures/sass_project}/config/initializers/session_store.rb +2 -2
  42. data/test/fixtures/sass_project/config/initializers/wrap_parameters.rb +12 -0
  43. data/test/{dummy → fixtures/sass_project}/config/locales/en.yml +1 -1
  44. data/test/{dummy → fixtures/sass_project}/config/routes.rb +2 -2
  45. data/test/fixtures/sass_project/db/seeds.rb +7 -0
  46. data/test/fixtures/sass_project/doc/README_FOR_APP +2 -0
  47. data/test/{dummy/log/production.log → fixtures/sass_project/lib/tasks/.gitkeep} +0 -0
  48. data/test/{dummy/log/server.log → fixtures/sass_project/log/.gitkeep} +0 -0
  49. data/test/{dummy → fixtures/sass_project}/public/404.html +0 -0
  50. data/test/{dummy → fixtures/sass_project}/public/422.html +0 -0
  51. data/test/{dummy → fixtures/sass_project}/public/500.html +0 -0
  52. data/test/{dummy → fixtures/sass_project}/public/favicon.ico +0 -0
  53. data/test/fixtures/sass_project/public/index.html +241 -0
  54. data/test/fixtures/sass_project/public/robots.txt +5 -0
  55. data/test/{dummy → fixtures/sass_project}/script/rails +0 -0
  56. data/test/fixtures/sass_project/vendor/assets/stylesheets/.gitkeep +0 -0
  57. data/test/fixtures/sass_project/vendor/plugins/.gitkeep +0 -0
  58. data/test/fixtures/scss_project/.gitignore +5 -0
  59. data/test/fixtures/scss_project/Gemfile +7 -0
  60. data/test/fixtures/scss_project/README +261 -0
  61. data/test/fixtures/scss_project/Rakefile +7 -0
  62. data/test/fixtures/scss_project/app/assets/images/rails.png +0 -0
  63. data/test/fixtures/scss_project/app/assets/javascripts/application.js +9 -0
  64. data/test/fixtures/scss_project/app/assets/stylesheets/_top_level_partial.css.scss +3 -0
  65. data/test/fixtures/scss_project/app/assets/stylesheets/application.css.scss +10 -0
  66. data/test/fixtures/scss_project/app/assets/stylesheets/globbed/globbed.css.scss +3 -0
  67. data/test/fixtures/scss_project/app/assets/stylesheets/globbed/nested/nested_glob.css.scss +3 -0
  68. data/test/fixtures/scss_project/app/assets/stylesheets/partials/_sass_import.css.sass +5 -0
  69. data/test/fixtures/scss_project/app/assets/stylesheets/partials/_scss_import.css.scss +9 -0
  70. data/test/fixtures/scss_project/app/assets/stylesheets/partials/subfolder/_relative_sass.css.sass +2 -0
  71. data/test/fixtures/scss_project/app/assets/stylesheets/partials/subfolder/_relative_scss.css.scss +3 -0
  72. data/test/fixtures/scss_project/app/assets/stylesheets/partials/subfolder/relative_not_a_partial.css.scss +3 -0
  73. data/test/fixtures/scss_project/app/assets/stylesheets/subfolder/another_plain.css +3 -0
  74. data/test/fixtures/scss_project/app/assets/stylesheets/subfolder/plain.css +3 -0
  75. data/test/fixtures/scss_project/app/assets/stylesheets/subfolder/second_level.css.scss +1 -0
  76. data/test/fixtures/scss_project/app/controllers/application_controller.rb +3 -0
  77. data/test/fixtures/scss_project/app/helpers/application_helper.rb +2 -0
  78. data/test/fixtures/scss_project/app/mailers/.gitkeep +0 -0
  79. data/test/fixtures/scss_project/app/models/.gitkeep +0 -0
  80. data/test/fixtures/scss_project/app/views/layouts/application.html.erb +14 -0
  81. data/test/fixtures/scss_project/config.ru +4 -0
  82. data/test/{dummy → fixtures/scss_project}/config/application.rb +13 -9
  83. data/test/fixtures/scss_project/config/boot.rb +6 -0
  84. data/test/fixtures/scss_project/config/database.yml +25 -0
  85. data/test/fixtures/scss_project/config/environment.rb +5 -0
  86. data/test/fixtures/scss_project/config/environments/development.rb +27 -0
  87. data/test/fixtures/scss_project/config/environments/production.rb +54 -0
  88. data/test/fixtures/scss_project/config/environments/test.rb +39 -0
  89. data/test/fixtures/scss_project/config/initializers/backtrace_silencers.rb +7 -0
  90. data/test/fixtures/scss_project/config/initializers/inflections.rb +10 -0
  91. data/test/fixtures/scss_project/config/initializers/mime_types.rb +5 -0
  92. data/test/fixtures/scss_project/config/initializers/secret_token.rb +7 -0
  93. data/test/fixtures/scss_project/config/initializers/session_store.rb +8 -0
  94. data/test/fixtures/scss_project/config/initializers/wrap_parameters.rb +12 -0
  95. data/test/fixtures/scss_project/config/locales/en.yml +5 -0
  96. data/test/fixtures/scss_project/config/routes.rb +58 -0
  97. data/test/fixtures/scss_project/db/seeds.rb +7 -0
  98. data/test/fixtures/scss_project/doc/README_FOR_APP +2 -0
  99. data/test/fixtures/scss_project/lib/tasks/.gitkeep +0 -0
  100. data/test/fixtures/scss_project/log/.gitkeep +0 -0
  101. data/test/fixtures/scss_project/public/404.html +26 -0
  102. data/test/fixtures/scss_project/public/422.html +26 -0
  103. data/test/fixtures/scss_project/public/500.html +26 -0
  104. data/test/fixtures/scss_project/public/favicon.ico +0 -0
  105. data/test/fixtures/scss_project/public/index.html +241 -0
  106. data/test/fixtures/scss_project/public/robots.txt +5 -0
  107. data/test/fixtures/scss_project/script/rails +6 -0
  108. data/test/fixtures/scss_project/vendor/assets/stylesheets/.gitkeep +0 -0
  109. data/test/fixtures/scss_project/vendor/plugins/.gitkeep +0 -0
  110. data/test/sass_rails_test.rb +46 -3
  111. data/test/support/sass_rails_test_case.rb +147 -0
  112. data/test/test_helper.rb +15 -11
  113. metadata +260 -85
  114. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  115. data/test/dummy/config/boot.rb +0 -10
  116. data/test/dummy/db/test.sqlite3 +0 -0
  117. data/test/dummy/log/test.log +0 -4
  118. data/test/dummy/public/javascripts/application.js +0 -2
  119. data/test/dummy/public/javascripts/controls.js +0 -965
  120. data/test/dummy/public/javascripts/dragdrop.js +0 -974
  121. data/test/dummy/public/javascripts/effects.js +0 -1123
  122. data/test/dummy/public/javascripts/prototype.js +0 -6001
  123. data/test/dummy/public/javascripts/rails.js +0 -191
  124. data/test/integration/navigation_test.rb +0 -7
  125. data/test/support/integration_case.rb +0 -5
data/Gemfile CHANGED
@@ -3,11 +3,10 @@ source "http://rubygems.org"
3
3
  # Specify your gem's dependencies in sass-rails.gemspec
4
4
  gemspec
5
5
 
6
- gem "rails", :path => "~/Code/cool_stuff/rails"
7
- gem "capybara", ">= 0.4.0"
8
- gem "sqlite3"
6
+ gem "rails", :git => "git://github.com/rails/rails.git", :branch => "3-1-stable"
7
+ gem "sprockets"
9
8
 
10
9
  # To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+)
11
10
  # gem 'ruby-debug'
12
- gem 'ruby-debug19'
11
+ # gem 'ruby-debug19'
13
12
 
@@ -0,0 +1,52 @@
1
+ # Official Ruby-on-Rails Integration with Sass
2
+
3
+ This gem provides official integration for ruby on rails projects with the Sass stylesheet language.
4
+
5
+ ## Installing
6
+
7
+ Since rails 3.1, new rails projects will be already configured to use Sass. If you are upgrading to rails 3.1 you will need to add the following to your Gemfile:
8
+
9
+ gem 'sass-rails'
10
+
11
+ ## Configuration
12
+
13
+ To configure Sass via rails set use `config.sass` in your
14
+ application and/or environment files to set configuration
15
+ properties that will be passed to Sass.
16
+
17
+ ### Example
18
+
19
+ MyProject::Application.configure do
20
+ config.sass.line_comments = false
21
+ config.sass.syntax = :nested
22
+ end
23
+
24
+ ### Options
25
+
26
+ The [list of supported options](http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#options) can be found on the Sass Website with the following caveats:
27
+
28
+ 1. Output compression is now controlled via the `config.assets.compress` boolean option instead of through the `:style` option.
29
+ 2. `:never_update` - This option is not supported. Instead set `config.assets.enabled = false`
30
+ 3. `:always_update` - This option is not supported. Sprockets uses a controller to access stylesheets in development mode instead of a full scan for changed files.
31
+ 4. `:always_check` - This option is not supported. Sprockets always checks in development.
32
+ 5. `:syntax` - This is determined by the file's extensions.
33
+ 6. `:filename` - This is determined by the file's name.
34
+ 7. `:line` - This is provided by the template handler.
35
+
36
+ ## Features
37
+
38
+ * **Glob Imports**. When in rails, there is a special import syntax that allows you to
39
+ glob imports relative to the folder of the stylesheet that is doing the importing.
40
+ E.g. `@import "mixins/*"` will import all the files in the mixins folder and
41
+ `@import "mixins/**/*"` will import all the files in the mixins tree.
42
+ Any valid ruby glob may be used. The imports are sorted alphabetically.
43
+ **NOTE:** It is recommended that you only use this when importing pure library
44
+ files (containing mixins and variables) because it is difficult to control the
45
+ cascade ordering for imports that contain styles using this approach.
46
+
47
+ ## Running Tests
48
+
49
+ $ bundle install
50
+ $ bundle exec rake test
51
+
52
+ If you need to test against local gems, use Bundler's gem :path option in the Gemfile and also edit `test/support/test_helper.rb` and tell the tests where the gem is checked out.
@@ -6,7 +6,7 @@ module Sass
6
6
  source_root File.expand_path("../templates", __FILE__)
7
7
 
8
8
  def copy_sass
9
- copy_file "stylesheet.css.sass", File.join('app/assets/stylesheets', class_path, "#{file_name}.css.sass")
9
+ template "stylesheet.css.sass", File.join('app/assets/stylesheets', class_path, "#{file_name}.css.sass")
10
10
  end
11
11
  end
12
12
  end
@@ -1,3 +1,6 @@
1
- // Place all the styles related to the matching controller here.
1
+ // Place all the styles related to the <%= name %> controller here.
2
2
  // They will automatically be included in application.css.
3
3
  // You can use Sass here: http://sass-lang.com/
4
+
5
+ body.<%= name.dasherize %>
6
+ // Place scoped styles here
@@ -7,7 +7,8 @@ module Sass
7
7
  def copy_stylesheet
8
8
  dir = ::Rails::Generators::ScaffoldGenerator.source_root
9
9
  file = File.join(dir, "scaffold.css")
10
- create_file "app/assets/stylesheets/scaffold.css.#{syntax}", ::Sass::CSS.new(File.read(file)).render(syntax)
10
+ converted_contents = ::Sass::CSS.new(File.read(file)).render(syntax)
11
+ create_file "app/assets/stylesheets/scaffolds.css.#{syntax}", converted_contents
11
12
  end
12
13
  end
13
14
  end
@@ -6,7 +6,7 @@ module Scss
6
6
  source_root File.expand_path("../templates", __FILE__)
7
7
 
8
8
  def copy_scss
9
- copy_file "stylesheet.css.scss", File.join('app/assets/stylesheets', class_path, "#{file_name}.css.scss")
9
+ template "stylesheet.css.scss", File.join('app/assets/stylesheets', class_path, "#{file_name}.css.scss")
10
10
  end
11
11
  end
12
12
  end
@@ -1,3 +1,7 @@
1
- // Place all the styles related to the matching controller here.
1
+ // Place all the styles related to the <%= name %> controller here.
2
2
  // They will automatically be included in application.css.
3
3
  // You can use Sass (SCSS) here: http://sass-lang.com/
4
+
5
+ body.<%= name.dasherize %> {
6
+ // Place scoped styles here
7
+ }
@@ -1,31 +1 @@
1
- module Sass
2
- class CssCompressor
3
- def compress(css)
4
- Sass::Engine.new(css,
5
- :syntax => :scss,
6
- :cache => false,
7
- :read_cache => false,
8
- :style => :compressed).render
9
- end
10
- end
11
-
12
- class Railtie < ::Rails::Railtie
13
- config.sass = ActiveSupport::OrderedOptions.new
14
- config.sass.syntax = :scss
15
-
16
- initializer :setup_sass do |app|
17
- syntax = app.config.sass.syntax
18
- alt_syntax = syntax.to_s == "sass" ? "scss" : "sass"
19
-
20
- app.config.generators.hide_namespace alt_syntax
21
- config.app_generators.stylesheet_engine app.config.sass.syntax
22
- end
23
-
24
- initializer :setup_compression do |app|
25
- if app.config.assets.compress
26
- app.config.assets.css_compressor = CssCompressor.new
27
- end
28
- end
29
- end
30
- end
31
-
1
+ require 'sass/rails'
@@ -0,0 +1,11 @@
1
+ module Sass
2
+ module Rails
3
+ end
4
+ end
5
+
6
+ require 'sass/rails/compressor'
7
+ require 'sass/rails/railtie'
8
+ require 'sass/rails/monkey_patches'
9
+ require 'sass/rails/importer'
10
+ require 'sass/rails/template_handlers'
11
+ require 'sass/rails/version'
@@ -0,0 +1,15 @@
1
+ require 'sass'
2
+
3
+ module Sass
4
+ module Rails
5
+ class CssCompressor
6
+ def compress(css)
7
+ Sass::Engine.new(css,
8
+ :syntax => :scss,
9
+ :cache => false,
10
+ :read_cache => false,
11
+ :style => :compressed).render
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,128 @@
1
+ require 'sprockets'
2
+
3
+ module Sass::Rails
4
+ class Importer
5
+ GLOB = /\*|\[.+\]/
6
+ PARTIAL = /^_/
7
+ HAS_EXTENSION = /\.css(.s[ac]ss)?$/
8
+
9
+ SASS_EXTENSIONS = {
10
+ ".css.sass" => :sass,
11
+ ".css.scss" => :scss
12
+ }
13
+ attr_reader :context
14
+
15
+ def initialize(context)
16
+ @context = context
17
+ end
18
+
19
+ def sass_file?(filename)
20
+ filename = filename.to_s
21
+ SASS_EXTENSIONS.keys.any?{|ext| filename[ext]}
22
+ end
23
+
24
+ def syntax(filename)
25
+ filename = filename.to_s
26
+ SASS_EXTENSIONS.each {|ext, syntax| return syntax if filename[(ext.size+2)..-1][ext]}
27
+ nil
28
+ end
29
+
30
+ def resolve(name, base_pathname = nil)
31
+ name = Pathname.new(name)
32
+ if base_pathname && base_pathname.to_s.size > 0
33
+ name = base_pathname.dirname.relative_path_from(context.pathname.dirname).join(name)
34
+ end
35
+ partial_name = name.dirname.join("_#{name.basename}")
36
+ sprockets_resolve(name) || sprockets_resolve(partial_name)
37
+ end
38
+
39
+ def find_relative(name, base, options)
40
+ base_pathname = Pathname.new(base)
41
+ if name =~ GLOB
42
+ glob_imports(name, base_pathname, options)
43
+ elsif pathname = resolve(name, base_pathname)
44
+ context.depend_on(pathname)
45
+ if sass_file?(pathname)
46
+ Sass::Engine.new(pathname.read, options.merge(:filename => pathname.to_s, :importer => self, :syntax => syntax(pathname)))
47
+ else
48
+ Sass::Engine.new(sprockets_process(pathname), options.merge(:filename => pathname.to_s, :importer => self, :syntax => :scss))
49
+ end
50
+ else
51
+ nil
52
+ end
53
+ end
54
+
55
+ def find(name, options)
56
+ if name =~ GLOB
57
+ nil # globs must be relative
58
+ elsif pathname = resolve(name)
59
+ context.depend_on(pathname)
60
+ if sass_file?(pathname)
61
+ Sass::Engine.new(pathname.read, options.merge(:filename => pathname.to_s, :importer => self, :syntax => syntax(pathname)))
62
+ else
63
+ Sass::Engine.new(sprockets_process(pathname), options.merge(:filename => pathname.to_s, :importer => self, :syntax => :scss))
64
+ end
65
+ else
66
+ nil
67
+ end
68
+ end
69
+
70
+ def each_globbed_file(glob, base_pathname, options)
71
+ Dir["#{base_pathname.dirname}/#{glob}"].sort.each do |filename|
72
+ next if filename == options[:filename]
73
+ yield filename if File.directory?(filename) || context.asset_requirable?(filename)
74
+ end
75
+ end
76
+
77
+ def glob_imports(glob, base_pathname, options)
78
+ contents = ""
79
+ each_globbed_file(glob, base_pathname, options) do |filename|
80
+ if File.directory?(filename)
81
+ context.depend_on(filename)
82
+ elsif context.asset_requirable?(filename)
83
+ context.depend_on(filename)
84
+ contents << "@import #{Pathname.new(filename).relative_path_from(base_pathname.dirname).to_s.inspect};\n"
85
+ end
86
+ end
87
+ return nil if contents.empty?
88
+ Sass::Engine.new(contents, options.merge(
89
+ :filename => base_pathname.to_s,
90
+ :importer => self,
91
+ :syntax => :scss
92
+ ))
93
+ end
94
+
95
+ def mtime(name, options)
96
+ if name =~ GLOB && options[:filename]
97
+ mtime = nil
98
+ each_globbed_file(name, Pathname.new(options[:filename]), options) do |p|
99
+ mtime ||= File.mtime(p)
100
+ mtime = [mtime, File.mtime(p)].max
101
+ end
102
+ mtime
103
+ elsif pathname = resolve(name)
104
+ pathname.mtime
105
+ end
106
+ end
107
+
108
+ def key(name, options)
109
+ ["Sprockets:" + File.dirname(File.expand_path(name)), File.basename(name)]
110
+ end
111
+
112
+ def to_s
113
+ "Sass::Rails::Importer(#{context.pathname})"
114
+ end
115
+
116
+ private
117
+ def sprockets_resolve(path)
118
+ context.resolve(path, :content_type => :self)
119
+ rescue Sprockets::FileNotFound, Sprockets::ContentTypeMismatch
120
+ nil
121
+ end
122
+
123
+ def sprockets_process(path)
124
+ context.environment[path].to_s
125
+ end
126
+ end
127
+
128
+ end
@@ -0,0 +1,20 @@
1
+ require 'sprockets/railtie'
2
+
3
+ module Sprockets
4
+ class Railtie < ::Rails::Railtie
5
+
6
+ module SassContext
7
+ attr_accessor :sass_config
8
+ end
9
+
10
+ protected
11
+
12
+ def asset_environment_with_sass_config(app, *args)
13
+ env = asset_environment_without_sass_config(app, *args)
14
+ env.context_class.extend(SassContext)
15
+ env.context_class.sass_config = app.config.sass
16
+ env
17
+ end
18
+ alias_method_chain :asset_environment, :sass_config
19
+ end
20
+ end
@@ -0,0 +1,43 @@
1
+ module Sass::Rails
2
+ class Railtie < ::Rails::Railtie
3
+ config.sass = ActiveSupport::OrderedOptions.new
4
+ # Establish static configuration defaults
5
+ # Emit scss files during stylesheet generation of scaffold
6
+ config.sass.preferred_syntax = :scss
7
+ # Use expanded output instead of the sass default of :nested
8
+ config.sass.style = :expanded
9
+ # Write sass cache files to tmp/sass-cache for performance
10
+ config.sass.cache = true
11
+ # Read sass cache files from tmp/sass-cache for performance
12
+ config.sass.read_cache = true
13
+ # Display line comments above each selector as a debugging aid
14
+ config.sass.line_comments = true
15
+
16
+ initializer :setup_sass do |app|
17
+ # Only emit one kind of syntax because though we have registered two kinds of generators
18
+ syntax = app.config.sass.preferred_syntax.to_sym
19
+ alt_syntax = syntax == :sass ? "scss" : "sass"
20
+ app.config.generators.hide_namespace alt_syntax
21
+
22
+ # Set the stylesheet engine to the preferred syntax
23
+ config.app_generators.stylesheet_engine syntax
24
+
25
+ # Set the sass cache location to tmp/sass-cache
26
+ config.sass.cache_location = File.join(Rails.root, "tmp/sass-cache")
27
+
28
+ # Establish configuration defaults that are evironmental in nature
29
+ if config.sass.full_exception.nil?
30
+ # Display a stack trace in the css output when in development-like environments.
31
+ config.sass.full_exception = app.config.consider_all_requests_local
32
+ end
33
+
34
+ end
35
+
36
+ initializer :setup_compression do |app|
37
+ if app.config.assets.compress
38
+ # Use sass's css_compressor
39
+ app.config.assets.css_compressor = CssCompressor.new
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,61 @@
1
+ require 'tilt'
2
+ require 'sprockets'
3
+
4
+ module Sass::Rails
5
+ class SassTemplate < Tilt::SassTemplate
6
+ self.default_mime_type = 'text/css'
7
+
8
+ def self.engine_initialized?
9
+ defined?(::Sass::Engine)
10
+ end
11
+
12
+ def initialize_engine
13
+ require_template_library 'sass'
14
+ end
15
+
16
+ def syntax
17
+ :sass
18
+ end
19
+
20
+ def sass_options_from_rails(scope)
21
+ scope.environment.context_class.sass_config
22
+ end
23
+
24
+ def sass_options(scope)
25
+ importer = self.importer(scope)
26
+ options = sass_options_from_rails(scope)
27
+ load_paths = (options[:load_paths] || []).dup
28
+ load_paths.unshift(importer)
29
+ options.merge(
30
+ :filename => eval_file,
31
+ :line => line,
32
+ :syntax => syntax,
33
+ :importer => importer,
34
+ :load_paths => load_paths
35
+ )
36
+ end
37
+
38
+ def importer(scope)
39
+ Sass::Rails::Importer.new(scope)
40
+ end
41
+
42
+ def prepare
43
+ end
44
+
45
+ def evaluate(scope, locals, &block)
46
+ Sass::Engine.new(data, sass_options(scope)).render
47
+ end
48
+ end
49
+
50
+ class ScssTemplate < SassTemplate
51
+ self.default_mime_type = 'text/css'
52
+
53
+ def syntax
54
+ :scss
55
+ end
56
+ end
57
+ end
58
+
59
+ Sprockets::Engines #invoke autoloading
60
+ Sprockets.register_engine '.sass', Sass::Rails::SassTemplate
61
+ Sprockets.register_engine '.scss', Sass::Rails::ScssTemplate
@@ -1,5 +1,5 @@
1
1
  module Sass
2
2
  module Rails
3
- VERSION = "3.1.0.rc.1"
3
+ VERSION = "3.1.0.rc.2"
4
4
  end
5
5
  end
@@ -1,22 +1,23 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  $:.push File.expand_path("../lib", __FILE__)
3
- require "sass-rails/version"
3
+ require "sass/rails/version"
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = "sass-rails"
7
7
  s.version = Sass::Rails::VERSION
8
8
  s.platform = Gem::Platform::RUBY
9
- s.authors = ["wycats"]
10
- s.email = ["wycats@gmail.com"]
11
- s.homepage = "http://www.rubyonrails.org"
12
- s.summary = %q{Ruby on Rails stylesheet engine for Sass}
13
- s.description = %q{Provides Ruby on Rails generators and asset support for Sass and SCSS}
9
+ s.authors = ["wycats", "chriseppstein"]
10
+ s.email = ["wycats@gmail.com", "chris@eppsteins.net"]
11
+ s.homepage = ""
12
+ s.summary = %q{Sass adapter for the Rails asset pipeline.}
13
+ s.description = %q{Sass adapter for the Rails asset pipeline.}
14
14
 
15
15
  s.rubyforge_project = "sass-rails"
16
16
 
17
- s.add_runtime_dependency 'sass', '~> 3.1.1'
17
+ s.add_runtime_dependency 'sass', '>= 3.1.2'
18
18
  s.add_runtime_dependency 'railties', '~> 3.1.0.rc1'
19
19
  s.add_runtime_dependency 'actionpack', '~> 3.1.0.rc1'
20
+ s.add_runtime_dependency 'sprockets', '>= 2.0.0.beta.9'
20
21
 
21
22
  s.files = `git ls-files`.split("\n")
22
23
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")