I have:
$ ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]
$ middleman version
Middleman 2.0.13.1
$ cat /etc/debian_version
6.0.3
if I start a project like so:
$ middleman init np --rack --bundler --template=html5 create np/config.ru create np/Gemfile run bundle install Fetching source index for http://rubygems.org/ Using multi_json (1.0.3) Using activesupport (3.1.1) Using addressable (2.2.6) Using chunky_png (1.2.5) Using coffee-script-source (1.1.2) Using execjs (1.2.9) Using coffee-script (2.2.0) Using fssm (0.2.7) Using sass (3.1.10) Using compass (0.11.5) Using daemons (1.1.4) Using eventmachine (0.12.10) Using em-websocket (0.3.3) Using thor (0.14.6) Using guard (0.6.3) Using guard-livereload (0.3.1) Using haml (3.1.3) Using hike (1.2.1) Using rack (1.3.5) Using url_mount (0.2.1) Using http_router (0.10.2) Using i18n (0.6.0) Using syntax (1.0.0) Using maruku (0.6.0) Using middleman-livereload (0.2.1) Using rack-protection (1.1.4) Using tilt (1.3.3) Using sinatra (1.3.1) Using padrino-core (0.10.5) Using padrino-helpers (0.10.5) Using rack-test (0.6.1) Using temple (0.3.4) Using slim (1.0.3) Using sprockets (2.0.3) Using thin (1.2.11) Using uglifier (1.0.4) Using middleman (2.0.13.1) Using bundler (1.0.21) Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed. create np/config.rb create np/source create np/source/404.html create np/source/README.md create np/source/apple-touch-icon-114x114-precomposed.png create np/source/apple-touch-icon-57x57-precomposed.png create np/source/apple-touch-icon-72x72-precomposed.png create np/source/apple-touch-icon-precomposed.png create np/source/apple-touch-icon.png create np/source/crossdomain.xml create np/source/css/style.css create np/source/favicon.ico create np/source/humans.txt create np/source/img/.gitignore create np/source/index.html create np/source/js/libs/jquery-1.6.2.js create np/source/js/libs/jquery-1.6.2.min.js create np/source/js/libs/modernizr-2.0.6.min.js create np/source/js/mylibs/.gitignore create np/source/js/plugins.js create np/source/js/script.js create np/source/robots.txt create np/source/test/index.html create np/source/test/qunit/qunit.css create np/source/test/qunit/qunit.js create np/source/test/tests.js exist np/source
and move into the directory to get a preview running:
$ cd np/ $ middleman server Please install rb-inotify gem for Linux inotify support Using polling (Please help us to support your system better than that.) Using inline Guardfile. Guard is now watching at '/tmp/np' /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/execjs-1.2.9/lib/execjs/runtimes.rb:47:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable) from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/execjs-1.2.9/lib/execjs.rb:5:in `' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/execjs-1.2.9/lib/execjs.rb:4:in `' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/coffee-script-2.2.0/lib/coffee_script.rb:1:in `require' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/coffee-script-2.2.0/lib/coffee_script.rb:1:in `' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/middleman-2.0.13.1/lib/middleman/renderers/coffee_script.rb:4:in `require' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/middleman-2.0.13.1/lib/middleman/renderers/coffee_script.rb:4:in `registered' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/sinatra-1.3.1/lib/sinatra/base.rb:1262:in `block in register' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/sinatra-1.3.1/lib/sinatra/base.rb:1260:in `each' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/sinatra-1.3.1/lib/sinatra/base.rb:1260:in `register' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/middleman-2.0.13.1/lib/middleman/core_extensions/rendering.rb:14:in `registered' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/sinatra-1.3.1/lib/sinatra/base.rb:1262:in `block in register' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/sinatra-1.3.1/lib/sinatra/base.rb:1260:in `each' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/sinatra-1.3.1/lib/sinatra/base.rb:1260:in `register' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/middleman-2.0.13.1/lib/middleman/base.rb:54:in `registered' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/sinatra-1.3.1/lib/sinatra/base.rb:1262:in `block in register' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/sinatra-1.3.1/lib/sinatra/base.rb:1260:in `each' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/sinatra-1.3.1/lib/sinatra/base.rb:1260:in `register' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/middleman-2.0.13.1/lib/middleman.rb:180:in `server' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/middleman-2.0.13.1/lib/middleman.rb:191:in `start_server' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/middleman-2.0.13.1/lib/middleman/guard.rb:58:in `block in server_start' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/middleman-2.0.13.1/lib/middleman/guard.rb:57:in `fork' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/middleman-2.0.13.1/lib/middleman/guard.rb:57:in `server_start' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/middleman-2.0.13.1/lib/middleman/guard.rb:47:in `start' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/guard-0.6.3/lib/guard.rb:66:in `supervised_task' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/guard-0.6.3/lib/guard.rb:43:in `block in start' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/guard-0.6.3/lib/guard.rb:43:in `each' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/guard-0.6.3/lib/guard.rb:43:in `start' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/middleman-2.0.13.1/lib/middleman/guard.rb:34:in `start' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/middleman-2.0.13.1/lib/middleman/cli.rb:55:in `server' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/thor-0.14.6/lib/thor/task.rb:22:in `run' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/thor-0.14.6/lib/thor/invocation.rb:118:in `invoke_task' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/thor-0.14.6/lib/thor.rb:263:in `dispatch' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/thor-0.14.6/lib/thor/base.rb:389:in `start' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/middleman-2.0.13.1/bin/middleman:52:in `start_cli!' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/middleman-2.0.13.1/bin/middleman:47:in `did_locate_middleman_project' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/middleman-2.0.13.1/bin/middleman:20:in `locate_middleman_root!' from /home/blt/.rvm/gems/ruby-1.9.2-p290/gems/middleman-2.0.13.1/bin/middleman:70:in `' from /home/blt/.rvm/gems/ruby-1.9.2-p290/bin/middleman:19:in `load' from /home/blt/.rvm/gems/ruby-1.9.2-p290/bin/middleman:19:in `' Bye bye...
despite that:
$ gem list | grep racer therubyracer (0.9.8) $ gem list | grep inotify rb-inotify (0.8.8)
I followed the RVM Installation Guide and the Middleman Getting Started. Any ideas why Middleman would fail to start a server?
It seems that middleman server
users a sandbox based solely on the Gemfile. If you've installed the gems globally, they'll not be present at runtime in the sandbox. The original Gemfile created by middleman init
looks like:
source "http://rubygems.org"
gem "middleman", "~>2.0.13.1"
edit this to be:
source "http://rubygems.org"
gem "middleman", "~>2.0.13.1"
gem "rb-inotify"
gem "therubyracer"
You could be less lazy and parameterize this by Operating System, if you like.
If you remove the Gemfile.lock file and then run in your root directory
bundle install --binstubs ./bin --path vendor/bundle
the bundle will install all the packages locally (and all the executables to start things up in ./bin )
You can also if it helps, try my template to get things started
This is the line you need to pay attention to
/home/blt/.rvm/gems/ruby-1.9.2-p290/gems/execjs-1.2.9/lib/execjs/runtimes.rb:47:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
Basically you need to install a js runtime like node js or v8 or something on your system so that execjs can work with it. Read this carefully
来源:https://stackoverflow.com/questions/7859755/why-wont-middleman-include-the-rb-inotify-and-therubyracer-gems-once-installed