为什么Middleman一旦安装就不会包含rb-inotify和therubyracer宝石?

时间:2011-10-22 13:06:38

标签: ruby gem inotify middleman

我有:

$ 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

如果我开始这样的项目:

$ 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

然后进入目录以运行预览:

$ 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...

尽管如此:

$ gem list | grep racer
therubyracer (0.9.8)

$ gem list | grep inotify
rb-inotify (0.8.8)

我关注了RVM Installation Guide和中间人Getting Started。任何有关Middleman无法启动服务器的想法?

3 个答案:

答案 0 :(得分:5)

似乎middleman server用户仅使用基于Gemfile的沙箱。如果您已全局安装了gem,那么它们将不会出现在沙箱中的运行时。由middleman init创建的原始Gemfile如下所示:

source "http://rubygems.org"
gem "middleman", "~>2.0.13.1"

将其编辑为:

source "http://rubygems.org"

gem "middleman", "~>2.0.13.1"
gem "rb-inotify"
gem "therubyracer"

如果您愿意,可以通过操作系统减少延迟并对其进行参数化。

答案 1 :(得分:0)

如果删除Gemfile.lock文件,然后在根目录中运行

捆绑安装--binstubs ./bin --path vendor / bundle

捆绑包将在本地安装所有包(以及所有可执行文件以./bin开头)

如果有帮助,您也可以尝试我的模板开始

http://github.com/vladp/middleman-Simple-Site

答案 2 :(得分:-1)

这是您需要注意的行

/home/blt/.rvm/gems/ruby-1.9.2-p290/gems/execjs-1.2.9/lib/execjs/runtimes.rb:47:in“autodetect”:找不到JavaScript运行时。有关可用运行时的列表,请参阅https://github.com/sstephenson/execjs。 (ExecJS :: RuntimeUnavailable)

基本上你需要在你的系统上安装像js或v8这样的js运行时,以便execjs可以使用它。仔细阅读this