middleman: Middleman fails whenever there is a .rb file present in sources directory

Expected behavior and actual behavior

Launching middleman with ‘middleman’ or ‘middleman build’ causes middleman to crash if there is a .rb file present anywhere in the sources directory. I use middleman to host some .rb source files. It’s currently even impossible to ignore those files, because middleman fails before even config is read. This happens with a fresh installation.

/home/angel/.gem/ruby/2.3.0/gems/tilt-2.0.5/lib/tilt/mapping.rb:243:in `require': cannot load such file -- opal (LoadError)
        from /home/angel/.gem/ruby/2.3.0/gems/tilt-2.0.5/lib/tilt/mapping.rb:243:in `block in lazy_load'
        from /home/angel/.gem/ruby/2.3.0/gems/tilt-2.0.5/lib/tilt/mapping.rb:241:in `each'
        from /home/angel/.gem/ruby/2.3.0/gems/tilt-2.0.5/lib/tilt/mapping.rb:241:in `lazy_load'
        from /home/angel/.gem/ruby/2.3.0/gems/tilt-2.0.5/lib/tilt/mapping.rb:216:in `lookup'
        from /home/angel/.gem/ruby/2.3.0/gems/tilt-2.0.5/lib/tilt/mapping.rb:154:in `[]'
        from /home/angel/.gem/ruby/2.3.0/gems/tilt-2.0.5/lib/tilt.rb:48:in `[]'
        from /home/angel/.gem/ruby/2.3.0/gems/middleman-core-4.1.12/lib/middleman-core/sources/source_watcher.rb:336:in `strip_extensions'
        from /home/angel/.gem/ruby/2.3.0/gems/contracts-0.13.0/lib/contracts/method_reference.rb:43:in `send_to'
        from /home/angel/.gem/ruby/2.3.0/gems/contracts-0.13.0/lib/contracts/call_with.rb:76:in `call_with'
        from /home/angel/.gem/ruby/2.3.0/gems/contracts-0.13.0/lib/contracts/method_handler.rb:138:in `block in redefine_method'
        from /home/angel/.gem/ruby/2.3.0/gems/middleman-core-4.1.12/lib/middleman-core/sources/source_watcher.rb:324:in `record_file_change'
        from /home/angel/.gem/ruby/2.3.0/gems/contracts-0.13.0/lib/contracts/method_reference.rb:43:in `send_to'
        from /home/angel/.gem/ruby/2.3.0/gems/contracts-0.13.0/lib/contracts/call_with.rb:76:in `call_with'
        from /home/angel/.gem/ruby/2.3.0/gems/contracts-0.13.0/lib/contracts/method_handler.rb:138:in `block in redefine_method'
        from /home/angel/.gem/ruby/2.3.0/gems/middleman-core-4.1.12/lib/middleman-core/sources/source_watcher.rb:265:in `block in update'
        from /home/angel/.gem/ruby/2.3.0/gems/middleman-core-4.1.12/lib/middleman-core/sources/source_watcher.rb:264:in `each'
        from /home/angel/.gem/ruby/2.3.0/gems/middleman-core-4.1.12/lib/middleman-core/sources/source_watcher.rb:264:in `update'
        from /home/angel/.gem/ruby/2.3.0/gems/contracts-0.13.0/lib/contracts/method_reference.rb:43:in `send_to'
        from /home/angel/.gem/ruby/2.3.0/gems/contracts-0.13.0/lib/contracts/call_with.rb:76:in `call_with'
        from /home/angel/.gem/ruby/2.3.0/gems/contracts-0.13.0/lib/contracts/method_handler.rb:138:in `block in redefine_method'
        from /home/angel/.gem/ruby/2.3.0/gems/middleman-core-4.1.12/lib/middleman-core/sources/source_watcher.rb:212:in `poll_once!'
        from /home/angel/.gem/ruby/2.3.0/gems/contracts-0.13.0/lib/contracts/method_reference.rb:43:in `send_to'
        from /home/angel/.gem/ruby/2.3.0/gems/contracts-0.13.0/lib/contracts/call_with.rb:76:in `call_with'
        from /home/angel/.gem/ruby/2.3.0/gems/contracts-0.13.0/lib/contracts/method_handler.rb:138:in `block in redefine_method'
        from /home/angel/.gem/ruby/2.3.0/gems/middleman-core-4.1.12/lib/middleman-core/sources.rb:241:in `block in poll_once!'
        from /home/angel/.gem/ruby/2.3.0/gems/middleman-core-4.1.12/lib/middleman-core/sources.rb:241:in `each'
        from /home/angel/.gem/ruby/2.3.0/gems/middleman-core-4.1.12/lib/middleman-core/sources.rb:241:in `reduce'
        from /home/angel/.gem/ruby/2.3.0/gems/middleman-core-4.1.12/lib/middleman-core/sources.rb:241:in `poll_once!'
        from /home/angel/.gem/ruby/2.3.0/gems/contracts-0.13.0/lib/contracts/method_reference.rb:43:in `send_to'
        from /home/angel/.gem/ruby/2.3.0/gems/contracts-0.13.0/lib/contracts/call_with.rb:76:in `call_with'
        from /home/angel/.gem/ruby/2.3.0/gems/contracts-0.13.0/lib/contracts/method_handler.rb:138:in `block in redefine_method'
        from /home/angel/.gem/ruby/2.3.0/gems/middleman-core-4.1.12/lib/middleman-core/core_extensions/file_watcher.rb:47:in `before_configuration'
        from /home/angel/.gem/ruby/2.3.0/gems/contracts-0.13.0/lib/contracts/method_reference.rb:43:in `send_to'
        from /home/angel/.gem/ruby/2.3.0/gems/contracts-0.13.0/lib/contracts/call_with.rb:76:in `call_with'
        from /home/angel/.gem/ruby/2.3.0/gems/contracts-0.13.0/lib/contracts/method_handler.rb:138:in `block in redefine_method'
        from /home/angel/.gem/ruby/2.3.0/gems/middleman-core-4.1.12/lib/middleman-core/callback_manager.rb:57:in `instance_exec'
        from /home/angel/.gem/ruby/2.3.0/gems/middleman-core-4.1.12/lib/middleman-core/callback_manager.rb:57:in `block in execute'
        from /home/angel/.gem/ruby/2.3.0/gems/hamster-3.0.0/lib/hamster/vector.rb:1316:in `each'
        from /home/angel/.gem/ruby/2.3.0/gems/hamster-3.0.0/lib/hamster/vector.rb:1316:in `traverse_depth_first'
        from /home/angel/.gem/ruby/2.3.0/gems/hamster-3.0.0/lib/hamster/vector.rb:431:in `each'
        from /home/angel/.gem/ruby/2.3.0/gems/middleman-core-4.1.12/lib/middleman-core/callback_manager.rb:57:in `execute'
        from /home/angel/.gem/ruby/2.3.0/gems/contracts-0.13.0/lib/contracts/method_reference.rb:43:in `send_to'
        from /home/angel/.gem/ruby/2.3.0/gems/contracts-0.13.0/lib/contracts/call_with.rb:76:in `call_with'
        from /home/angel/.gem/ruby/2.3.0/gems/contracts-0.13.0/lib/contracts/method_handler.rb:138:in `block in redefine_method'
        from /home/angel/.gem/ruby/2.3.0/gems/middleman-core-4.1.12/lib/middleman-core/callback_manager.rb:28:in `block in install_methods!'
        from /home/angel/.gem/ruby/2.3.0/gems/middleman-core-4.1.12/lib/middleman-core/application.rb:283:in `initialize'
        from /home/angel/.gem/ruby/2.3.0/gems/middleman-cli-4.1.12/bin/middleman:51:in `new'
        from /home/angel/.gem/ruby/2.3.0/gems/middleman-cli-4.1.12/bin/middleman:51:in `<top (required)>'
        from /home/angel/.gem/ruby/2.3.0/bin/middleman:23:in `load'
        from /home/angel/.gem/ruby/2.3.0/bin/middleman:23:in `<main>'

Steps to reproduce the problem (from a clean middleman installation)

middleman build

Additional information

  • Ruby version: 2.3.1p112
  • Middleman version:
  • OS version:

About this issue

  • Original URL
  • State: closed
  • Created 8 years ago
  • Comments: 16 (1 by maintainers)

Commits related to this issue

Most upvoted comments

God damn Tilt 2 really shit the bed. Okay, I need to take some time and add much calmer “no please don’t render this” error catching around their freak out code.

Ran into this same issue today. Adding gem 'opal' gets past the first error, but a new one is thrown: uninitialized constant Opal::Processor (NameError)

Adding a line:

gem 'opal'

to Gemfile and running bundle install command solved the issue for me.

My error was: /var/lib/gems/2.3.0/gems/tilt-2.0.7/lib/tilt/mapping.rb:243:in `require' : cannot load such file -- org-ruby (LoadError) Looking closely, I found out that tilt is sort of templating modes handler, hence the org-ruby problem (org mode for Emacs). After installation of org-ruby everything is up again. Sorry! (I am new to Ruby, however, I believe the installation of the require-d packages must be handled automatically by a package manager). All the best!