问题
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?
回答1:
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.
回答2:
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
http://github.com/vladp/middleman-Simple-Site
回答3:
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