0
votes

i try to set up a bootstrap-sass ruby on rails project in Intellij IDEA to auto-compile .scss files using File Watchers plug-in. file watcher is configured by default. i import bootstrap libraries

@import "bootstrap-sprockets";   
@import "bootstrap";

in my app/assets/stylesheets/application.css.scss and when file watcher executes, i get following output in newly created .css file :

  /*
Error: File to import not found or unreadable: bootstrap-sprockets.
       Load paths:
         
        on line 1 of application.css.scss

1: @import "bootstrap-sprockets";
2: @import "bootstrap";

Backtrace:
application.css.scss:1
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/tree/import_node.rb:66:in `rescue in import'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/tree/import_node.rb:45:in `import'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/tree/import_node.rb:28:in `imported_file'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/tree/import_node.rb:37:in `css_import?'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/tree/visitors/perform.rb:311:in `visit_import'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/tree/visitors/base.rb:36:in `visit'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/tree/visitors/perform.rb:158:in `block in visit'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/stack.rb:79:in `block in with_base'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/stack.rb:115:in `with_frame'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/stack.rb:79:in `with_base'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/tree/visitors/perform.rb:158:in `visit'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/tree/visitors/base.rb:52:in `block in visit_children'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/tree/visitors/base.rb:52:in `map'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/tree/visitors/base.rb:52:in `visit_children'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/tree/visitors/perform.rb:167:in `block in visit_children'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/tree/visitors/perform.rb:179:in `with_environment'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/tree/visitors/perform.rb:166:in `visit_children'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/tree/visitors/base.rb:36:in `block in visit'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/tree/visitors/perform.rb:186:in `visit_root'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/tree/visitors/base.rb:36:in `visit'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/tree/visitors/perform.rb:157:in `visit'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/tree/visitors/perform.rb:8:in `visit'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/tree/root_node.rb:36:in `css_tree'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/tree/root_node.rb:29:in `render_with_sourcemap'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/engine.rb:368:in `_render_with_sourcemap'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/engine.rb:285:in `render_with_sourcemap'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/plugin/compiler.rb:490:in `update_stylesheet'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/plugin/compiler.rb:215:in `block in update_stylesheets'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/plugin/compiler.rb:209:in `each'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/plugin/compiler.rb:209:in `update_stylesheets'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/plugin.rb:82:in `update_stylesheets'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/exec/sass_scss.rb:361:in `watch_or_update'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/exec/sass_scss.rb:51:in `process_result'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/exec/base.rb:52:in `parse'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/lib/sass/exec/base.rb:19:in `parse!'
/Library/Ruby/Gems/2.0.0/gems/sass-3.4.13/bin/scss:13:in `<top (required)>'
/usr/bin/scss:23:in `load'
/usr/bin/scss:23:in `<main>'
*/
body:before {
  white-space: pre;
  font-family: monospace;
  content: "Error: File to import not found or unreadable: bootstrap-sprockets.\A        Load paths:\A          \A         on line 1 of application.css.scss\A \A 1: @import \"bootstrap-sprockets\";\A 2: @import \"bootstrap\";"; }

  

  
it seems like file watcher can't identify the path to ruby bootstrap library. any ideas on how to fix it?

my gemfile:

source 'http://rubygems.org'

    gem 'bootstrap-sass'
    gem 'rails', '4.2.1'
    gem 'sqlite3'
    gem 'sass-rails', '~> 5.0'

gemfile.lock

GEM
  remote: http://rubygems.org/
  specs:
actionmailer (4.2.1)
  actionpack (= 4.2.1)
  actionview (= 4.2.1)
  activejob (= 4.2.1)
  mail (~> 2.5, >= 2.5.4)
  rails-dom-testing (~> 1.0, >= 1.0.5)
actionpack (4.2.1)
  actionview (= 4.2.1)
  activesupport (= 4.2.1)
  rack (~> 1.6)
  rack-test (~> 0.6.2)
  rails-dom-testing (~> 1.0, >= 1.0.5)
  rails-html-sanitizer (~> 1.0, >= 1.0.1)
actionview (4.2.1)
  activesupport (= 4.2.1)
  builder (~> 3.1)
  erubis (~> 2.7.0)
  rails-dom-testing (~> 1.0, >= 1.0.5)
  rails-html-sanitizer (~> 1.0, >= 1.0.1)
activejob (4.2.1)
  activesupport (= 4.2.1)
  globalid (>= 0.3.0)
activemodel (4.2.1)
  activesupport (= 4.2.1)
  builder (~> 3.1)
activerecord (4.2.1)
  activemodel (= 4.2.1)
  activesupport (= 4.2.1)
  arel (~> 6.0)
activesupport (4.2.1)
  i18n (~> 0.7)
  json (~> 1.7, >= 1.7.7)
  minitest (~> 5.1)
  thread_safe (~> 0.3, >= 0.3.4)
  tzinfo (~> 1.1)
arel (6.0.0)
autoprefixer-rails (5.1.8)
  execjs
  json
bootstrap-sass (3.3.4.1)
  autoprefixer-rails (>= 5.0.0.1)
  sass (>= 3.2.19)
builder (3.2.2)
erubis (2.7.0)
execjs (2.5.0)
globalid (0.3.3)
  activesupport (>= 4.1.0)
hike (1.2.3)
i18n (0.7.0)
json (1.8.2)
loofah (2.0.1)
  nokogiri (>= 1.5.9)
mail (2.6.3)
  mime-types (>= 1.16, < 3)
mime-types (2.4.3)
mini_portile (0.6.2)
minitest (5.5.1)
multi_json (1.11.0)
nokogiri (1.6.6.2)
  mini_portile (~> 0.6.0)
rack (1.6.0)
rack-test (0.6.3)
  rack (>= 1.0)
rails (4.2.1)
  actionmailer (= 4.2.1)
  actionpack (= 4.2.1)
  actionview (= 4.2.1)
  activejob (= 4.2.1)
  activemodel (= 4.2.1)
  activerecord (= 4.2.1)
  activesupport (= 4.2.1)
  bundler (>= 1.3.0, < 2.0)
  railties (= 4.2.1)
  sprockets-rails
rails-deprecated_sanitizer (1.0.3)
  activesupport (>= 4.2.0.alpha)
rails-dom-testing (1.0.6)
  activesupport (>= 4.2.0.beta, < 5.0)
  nokogiri (~> 1.6.0)
  rails-deprecated_sanitizer (>= 1.0.1)
rails-html-sanitizer (1.0.2)
  loofah (~> 2.0)
railties (4.2.1)
  actionpack (= 4.2.1)
  activesupport (= 4.2.1)
  rake (>= 0.8.7)
  thor (>= 0.18.1, < 2.0)
rake (10.4.2)
sass (3.4.13)
sass-rails (5.0.3)
  railties (>= 4.0.0, < 5.0)
  sass (~> 3.1)
  sprockets (>= 2.8, < 4.0)
  sprockets-rails (>= 2.0, < 4.0)
  tilt (~> 1.1)
sprockets (2.12.3)
  hike (~> 1.2)
  multi_json (~> 1.0)
  rack (~> 1.0)
  tilt (~> 1.1, != 1.3.0)
sprockets-rails (2.2.4)
  actionpack (>= 3.0)
  activesupport (>= 3.0)
  sprockets (>= 2.8, < 4.0)
sqlite3 (1.3.10)
thor (0.19.1)
thread_safe (0.3.5)
tilt (1.4.1)
tzinfo (1.2.2)
  thread_safe (~> 0.1)

PLATFORMS
  ruby

DEPENDENCIES
  bootstrap-sass
  rails (= 4.2.1)
  sass-rails (~> 5.0)
  sqlite3
1

1 Answers

0
votes

Generally, in rails projects *.scss files shouldn't be compiled to .css manually using an external tool (e.g. "File Watchers"). Usually, Ruby on Rails manages transpiling under the hood when serving requests. Anyway, it's possible to configure "File Watchers":

Program: /path/to/scss
Arguments: --require bootstrap-sass $FileName$ $FileNameWithoutExtension$.css
Working directory: $FileDir$
Output path to refresh: $FileNameWithoutExtension$.css:$FileNameWithoutExtension$.css.map

Tested in the following environment:

$ scss --version
Sass 3.4.13 (Selective Steve)
  • ruby 2.1.5p273
  • bootstrap-sass 3.3.4.1