anjlab / bootstrap-rails

Twitter Bootstrap CSS (with Sass flavour) and JS toolkits for Rails 3 projects
https://github.com/anjlab/bootstrap-rails
729 stars 96 forks source link

rake assets:precompile fails: Undefined variable: '@alert-padding' #91

Open jizak opened 10 years ago

jizak commented 10 years ago

Undefined variable: "$alert-padding". (in /Users/pavlo/.rvm/gems/ruby-2.0.0-p195/gems/anjlab-bootstrap-rails-3.0.2.0/app/assets/stylesheets/twitter/bootstrap/_alerts.scss) /Users/pavlo/.rvm/gems/ruby-2.0.0-p195/gems/anjlab-bootstrap-rails-3.0.2.0/app/assets/stylesheets/twitter/bootstrap/_alerts.scss:10 /Users/pavlo/.rvm/gems/ruby-2.0.0-p195/gems/sass-3.2.10/lib/sass/script/variable.rb:49:in _perform' /Users/pavlo/.rvm/gems/ruby-2.0.0-p195/gems/sass-3.2.10/lib/sass/script/node.rb:40:inperform' /Users/pavlo/.rvm/gems/ruby-2.0.0-p195/gems/sass-3.2.10/lib/sass/tree/visitors/perform.rb:298:in visit_prop' /Users/pavlo/.rvm/gems/ruby-2.0.0-p195/gems/sass-3.2.10/lib/sass/tree/visitors/base.rb:37:invisit' /Users/pavlo/.rvm/gems/ruby-2.0.0-p195/gems/sass-3.2.10/lib/sass/tree/visitors/perform.rb:100:in visit' /Users/pavlo/.rvm/gems/ruby-2.0.0-p195/gems/sass-3.2.10/lib/sass/tree/visitors/base.rb:53:inblock in visit_children' /Users/pavlo/.rvm/gems/ruby-2.0.0-p195/gems/sass-3.2.10/lib/sass/tree/visitors/base.rb:53:in map' /Users/pavlo/.rvm/gems/ruby-2.0.0-p195/gems/sass-3.2.10/lib/sass/tree/visitors/base.rb:53:invisit_children' /Users/pavlo/.rvm/gems/ruby-2.0.0-p195/gems/sass-3.2.10/lib/sass/tree/visitors/perform.rb:109:in block in visit_children' /Users/pavlo/.rvm/gems/ruby-2.0.0-p195/gems/sass-3.2.10/lib/sass/tree/visitors/perform.rb:121:inwith_environment' /Users/pavlo/.rvm/gems/ruby-2.0.0-p195/gems/sass-3.2.10/lib/sass/tree/visitors/perform.rb:108:in visit_children' /Users/pavlo/.rvm/gems/ruby-2.0.0-p195/gems/sass-3.2.10/lib/sass/tree/visitors/base.rb:37:inblock in visit' /Users/pavlo/.rvm/gems/ruby-2.0.0-p195/gems/sass-3.2.10/lib/sass/tree/visitors/perform.rb:320:in visit_rule' /Users/pavlo/.rvm/gems/ruby-2.0.0-p195/gems/sass-3.2.10/lib/sass/tree/visitors/base.rb:37:invisit' /Users/pavlo/.rvm/gems/ruby-2.0.0-p195/gems/sass-3.2.10/lib/sass/tree/visitors/perform.rb:100:in `visit'

ghost commented 10 years ago

I'm getting the exact same error when I run:

RAILS_ENV=production bundle exec rake assets:precompile --trace

Results in failure to successfully precompile before deploying to Heroku

yury commented 10 years ago

@skellyc can you gist you gemfile?

imgarylai commented 10 years ago

I also got this problems.

This is my Gemfile

source 'http://rubygems.org'

gem 'rails', '3.2.14'

# gem 'thin'
# gem 'mysql2'
gem 'pg'
gem 'devise', '~> 3.0.3'
gem 'gon'
gem 'anjlab-bootstrap-rails', '>= 3.0.0.0', :require => 'bootstrap-rails'
gem 'filepicker-rails'
gem 'acts-as-taggable-on'
gem 'acts_as_commentable', '3.0.1'
gem 'acts_as_votable', '~> 0.7.1'
gem 'acts_as_follower', '~> 0.1.1'
# gem 'i18n-js'
gem 'strong_parameters'
gem 'will_paginate', '~> 3.0'
gem 'rolify'
gem 'cocoon'
gem 'friendly_id', '~> 4.0.10'
gem 'validate_url'
gem 'client_side_validations'
gem 'reform'
gem 'sidekiq'
gem 'settingslogic'
gem "active_model_serializers"
# gem 'unicorn'

gem 'sass-rails', '~> 3.2.3'
gem 'font-awesome-rails'
group :assets do
  gem 'turbo-sprockets-rails3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'therubyracer'

  gem 'uglifier', '>= 1.0.3'
  gem 'angular-rails'
  gem 'compass-rails'
  gem 'chosen-rails'
  gem 'bootstrap-datepicker-rails'
  gem 'bootstrap-datetimepicker-rails'
  gem 'angularjs-rails'
end

gem 'jquery-rails'
gem 'jquery-ui-rails'

gem "geocoder"

group :development, :test do
  gem 'bullet'
  gem 'rspec-rails'
  gem 'capybara'
  gem 'database_cleaner'
  gem 'launchy'
  gem 'better_errors'
  gem 'binding_of_caller'
  gem 'xray-rails'
  gem 'hirb'
  gem 'hirb-unicode'
  gem 'wirble'
  gem 'annotate', '>=2.5.0'
  gem "capistrano", "~> 2.15.5"
end

group :production, :staging do
  # gem 'eventmachine'
  # gem 'rainbows'
  gem 'unicorn'
  gem 'exceptional'
  gem 'newrelic_rpm'
end
astenuz commented 10 years ago

Hello, same error here, this is my gemfile

source 'https://rubygems.org'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.0.0'

# Use SCSS for stylesheets
gem 'sass-rails', '~> 4.0.0'

# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'

# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-rails', '~> 4.0.0'

# Use jquery as the JavaScript library
gem 'jquery-rails'

# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 1.2'

gem 'devise'

gem 'cancan', github: 'ryanb/cancan'

#gem 'mysql2', platform: :ruby

gem 'activerecord-jdbcmysql-adapter'

gem 'json_builder'

gem 'bootstrap-sass', github: 'thomas-mcdonald/bootstrap-sass'

gem 'ng-rails-csrf'

gem 'puma'

gem 'capistrano', group: :development

gem 'capistrano-rails', group: :development

gem 'capistrano-bundler', group: :development

gem 'capistrano-rvm', group: :development

gem 'capistrano-puma', require: false

gem 'sprockets-rails', :require => 'sprockets/railtie'
yury commented 10 years ago

@astenuz this is not thomas-mcdonald/bootstrap-sass gem. This is anjlab-bootstrap-rails

yury commented 10 years ago

Actually, tried with these Gemfiles - everything is ok.

Can some post application.css.scss?

astenuz commented 10 years ago

@yury, you're right, however, it is the same error, could this be that the error is not generated by the bootstrap gem itself?. Actually i started having it when i had to add sprockets gem, before that it was precompiling correctly.

here is the stacktrace

rake aborted!
Undefined variable: "$alert-padding".
  (in /var/www/feriasbiba/shared/bundle/jruby/1.9/bundler/gems/bootstrap-sass-efab96f854dc/vendor/assets/stylesheets/bootstrap/_alerts.scss:10)
/var/www/feriasbiba/shared/bundle/jruby/1.9/bundler/gems/bootstrap-sass-efab96f854dc/vendor/assets/stylesheets/bootstrap/_alerts.scss:10
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/script/variable.rb:49:in `_perform'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/script/node.rb:40:in `perform'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:298:in `visit_prop'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:37:in `visit'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:100:in `visit'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:53:in `visit_children'
org/jruby/RubyArray.java:2413:in `map'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:53:in `visit_children'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:109:in `visit_children'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:121:in `with_environment'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:108:in `visit_children'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:37:in `visit'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:320:in `visit_rule'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:37:in `visit'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:100:in `visit'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:53:in `visit_children'
org/jruby/RubyArray.java:2413:in `map'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:53:in `visit_children'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:109:in `visit_children'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:121:in `with_environment'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:108:in `visit_children'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:37:in `visit'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:128:in `visit_root'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/tree/visitors/base.rb:37:in `visit'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:100:in `visit'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/tree/visitors/perform.rb:7:in `visit'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/tree/root_node.rb:20:in `render'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/engine.rb:315:in `_render'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sass-3.2.12/lib/sass/engine.rb:262:in `render'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/sprockets/sass_template.rb:53:in `evaluate'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/tilt-1.4.1/lib/tilt/template.rb:103:in `render'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/sprockets/context.rb:197:in `evaluate'
org/jruby/RubyArray.java:1613:in `each'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/sprockets/context.rb:194:in `evaluate'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/sprockets/processed_asset.rb:12:in `initialize'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/sprockets/base.rb:374:in `build_asset'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/sprockets/base.rb:395:in `circular_call_protection'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/sprockets/base.rb:373:in `build_asset'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/sprockets/index.rb:94:in `build_asset'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/sprockets/caching.rb:55:in `cache_asset'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/sprockets/index.rb:93:in `build_asset'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/sprockets/base.rb:287:in `find_asset'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/sprockets/index.rb:60:in `find_asset'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/sprockets/bundled_asset.rb:16:in `initialize'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/sprockets/base.rb:377:in `build_asset'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/sprockets/index.rb:94:in `build_asset'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/sprockets/caching.rb:55:in `cache_asset'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/sprockets/index.rb:93:in `build_asset'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/sprockets/base.rb:287:in `find_asset'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/sprockets/index.rb:60:in `find_asset'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/sprockets/manifest.rb:211:in `find_asset'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/sprockets/manifest.rb:257:in `benchmark'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/sprockets/manifest.rb:210:in `find_asset'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/sprockets/manifest.rb:119:in `compile'
org/jruby/RubyArray.java:1613:in `each'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/sprockets/manifest.rb:118:in `compile'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-rails-2.0.1/lib/sprockets/rails/task.rb:60:in `define'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-2.10.0/lib/rake/sprocketstask.rb:146:in `with_logger'
/var/www/feriasbiba/shared/bundle/jruby/1.9/gems/sprockets-rails-2.0.1/lib/sprockets/rails/task.rb:59:in `define'
org/jruby/RubyProc.java:271:in `call'
org/jruby/RubyArray.java:1613:in `each'
org/jruby/RubyArray.java:1613:in `each'
org/jruby/RubyKernel.java:1103:in `load'
tomoyuki28jp commented 10 years ago

Facing the same error.

yury commented 10 years ago

@tomoyuki28jp application.css.scss?

tomoyuki28jp commented 10 years ago

@yury, thanks for your reply! I got the same erorr when I run rspec tests, so my error might be different one from this issue. (sorry!)

Here is my application.css.scss

/*
 *= require_self
 *= require_tree .
 */
@import "twitter/bootstrap";

I'm using bootstrap variables in other css files. ex: app/assets/stylesheets/posts/index.css.scss

@import "twitter/bootstrap/variables";
.user { font-size: $font-size-base; }

And I get errors like this one:

5) Posts GET /posts works! (now write some real specs)
   Failure/Error: get posts_path
   ActionView::Template::Error:
     Undefined variable: "$font-size-base".
       (in /Users/tomo/foo/app/assets/stylesheets/application.css.scss)
tomoyuki28jp commented 10 years ago

Here is my Gemfile abount anjlab-bootstrap-rails.

Gemfile

gem 'anjlab-bootstrap-rails',
  require: 'bootstrap-rails',
  github: 'anjlab/bootstrap-rails'

Gemfile.lock

GIT
  remote: git://github.com/anjlab/bootstrap-rails.git
  revision: 461121444e24cdf78357418bfca9f2b8a9a1c518
  specs:
    anjlab-bootstrap-rails (3.0.3.0)
      railties (>= 3.0)
      sass (>= 3.2)
yury commented 10 years ago

is your gem on top most group in Gemfile? not in assets?

yury commented 10 years ago

what if you remove //require_self and require_tree .

and put something like this:

@import "twitter/bootstrap";
@import "posts/index";
tomoyuki28jp commented 10 years ago

@yury Not in assets. My Gemfile starts like this:

source 'https://rubygems.org'

gem 'rails', '4.0.1'
gem 'mysql2'
gem 'therubyracer'
gem 'sass-rails', '~> 4.0.0'
gem 'anjlab-bootstrap-rails',
  require: 'bootstrap-rails',
  github: 'anjlab/bootstrap-rails'
tomoyuki28jp commented 10 years ago

@yury, I've tried this:

@import "twitter/bootstrap";
@import "posts/index";

But I get the same error like: Undefined variable: "$font-size-base".

tomoyuki28jp commented 10 years ago

@yury Ah, sorry. Removing "require_tree ." and import each CSS file actually works. Importing all the CSS files manually is not an ideal way, is there a better way to fix it?

scottsword commented 10 years ago

require_tree is just recursively pulling in each individual scss file so the sass isn't getting properly complied. Just go to your main scss file (whatever you have the file named) and perform an @import to bootstrap. @tomoyuki28jp if you use the @import method I described you won't actually be doing anything "manually" sass with just pull everything in automatically. The only import you really need to do is the main bootstrap sass file.

tomoyuki28jp commented 10 years ago

@scottsword Thanks for your reply. I tried your way, but it doesn't work for me. If I use require_tree . in application.css, it is executed before @import "bootstrap"; so I get the Undefined variable error, I think.

forever-ram commented 9 years ago

Hi I'm also having the same issue. I've this issue while assets precompile, during deployment on my staging server, using capistrano script.

rake aborted!
DEBUG[df74fefa]     Sass::SyntaxError: Undefined variable: "$alert-padding".
DEBUG[df74fefa]       (in /home/deploy/apps/cbu_staging/shared/bundle/ruby/2.1.0/gems/bootstrap-sass-3.3.1.0/assets/stylesheets/bootstrap/_alerts.scss:10)

I'm using

Ruby : '2.1.3'
Rails : '4.1.5'

Here is my gist url :

https://gist.github.com/forever-ram/7f9c3a61f36033fc8a4f

In my gem file I've three Gems which are mostly using

gem 'devise'
gem 'activeadmin', github: 'activeadmin'
gem 'comfortable_mexican_sofa', '~> 1.12.0'

when I've applied the 'active_admin' gem and push to server I've got error in assets precompile so I've added this solution for fix the issue (I don't know what issue at that time)

 config.assets.precompile += %w(*.svg *.eot *.woff *.ttf *.gif *.png *.ico)
 config.assets.precompile << /\A(?!active_admin).*\.(js|css)\z/ 

Now I've added gem "'comfortable_mexican_sofa', '~> 1.12.0'" and I've this issue : Sass::SyntaxError: Undefined variable: "$alert-padding"

I've tried with the one solution by adding

config.assets.precompile += %w(*.js *.css *.svg *.eot *.woff *.ttf *.gif *.png *.ico)

but after this I've got another issue with active admin

rake aborted!
DEBUG[d30d2808]     Sass::SyntaxError: Undefined mixin 'global-reset'.
DEBUG[d30d2808]       (in /home/deploy/apps/cbu_staging/shared/bundle/ruby/2.1.0/bundler/gems/activeadmin-5af560b2b6cd/app/assets/stylesheets/active_admin/_base.css.scss:3)
DEBUG[d30d2808]     /home/deploy/apps/cbu_staging/shared/bundle/ruby/2.1.0/bundler/gems/activeadmin-5af560b2b6cd/app/assets/stylesheets/active_admin/_base.css.scss:3:in `global-reset'
DEBUG[d30d2808]     /home/deploy/apps/cbu_staging/shared/bundle/ruby/2.1.0/bundler/gems/activeadmin-5af560b2b6cd/app/assets/stylesheets/active_admin/_base.css.scss:3

I don't have 'apllication.css.scss' file in my assets. Please let me know what is the exact solution for the main issue.

nimser commented 9 years ago

Facing a similar error here. Here is how it hungs:

Sass::SyntaxError: Undefined variable: "$alert-padding".
    (in /home/owner/.rvm/gems/ruby-2.1.5/gems/bootstrap-sass-3.3.3/assets/stylesheets/bootstrap/_alerts.scss:10)

I looked up with bundle open in the bootstrap-sass gem and found out that the variable was defined in assets/stylesheets/bootstrap/_variables.scss. So I thought importing that file in app/assets/stylesheets/application.css.scss should solve the problem. Here's how I do it:

@import "bootstrap/variables";

But still the same error appears. Following the advice of this post on SO, I've done a puts config.assets.precompile.inspect in application.rb to check that wierd precompiling rules where not set anywhere, but it returns (lambda)>, /(?:\/|\\|\A)application\.(css|js)$/] which I think might be the default?

emerak commented 7 years ago

Did anyone find a solution to this?

syedmahmad commented 6 years ago

Hello EveryOne. Just add these lines in your config/application.rb if you are using scss instead of css.

config.assets.precompile << %w( .scss .js )