【问题标题】:Can't stop Sinatra using Ctrl+C when `require 'coffee-script'``require 'coffee-script'` 时无法使用 Ctrl+C 停止 Sinatra
【发布时间】:2011-08-29 06:59:36
【问题描述】:

我在 Ubuntu 11.04 64 位上运行 Ruby 1.9.2p180。

我有一个使用Sinatra 的最简单的CoffeeScript 示例,它运行良好,但当我按下Ctrl+C 快捷方式时不会停止。所以每次我都必须kill -9 并且变得相当乏味。

app.rb

require 'sinatra'
require 'coffee-script'

get '/' do
  '<script src="/app.js" type="text/javascript"></script>'
end

get '/app.js' do
  coffee :app
end

views/app.coffee:

alert 'Foo'

它在 Ruby 1.8.7 上工作,稍作修改:

require 'rubygems'
require 'sinatra'
require 'coffee-script'
require 'json'

get '/' do
  '<script src="/app.js" type="text/javascript"></script>'
end

get '/app.js' do
  coffee :app
end

当我删除require 'coffee-script' 行时,它也可以在 1.9.2 上使用,但给了我一个警告:

WARN: tilt autoloading 'coffee_script' in a non thread-safe way; explicit require 'coffee_script' suggested.

发现它在使用 therubyracer有效,但在 node 上失败。来自 Ubuntu 10.10 存储库的 0.1.97 版本是唯一的例外。当使用 Natty 的 0.2.6 时,它会失败,并且当使用 nvm 安装最新的 (0.4.8) 时,我无法通过 nvm 安装 0.1.97。

【问题讨论】:

    标签: ruby node.js sinatra coffeescript ruby-1.9.2


    【解决方案1】:

    在 Ruby 1.9.2、Sinatra 1.3.2、CoffeeScript 2.2.0 和 Node 0.6.2 上不再出现这种情况。

    【讨论】:

      【解决方案2】:

      无法复制。我在运行 bash 和 Ruby 1.9.2p180 的 Mac (OS 10.6.7) 上。我也没有收到您的 tilt 警告。

      我在使用 The Middleman(基于 Sinatra)或 Rails 3.1 时也没有遇到过这个问题;两者都使用相同的 coffee-script gem(Tilt 也是如此;我怀疑 coffee_script 只是一个错字)。

      您是否尝试过将所有相关的 gem(sinatra、coffee-script、tilt、execjs)更新到最新版本?你的系统上有什么 JS 环境(例如你有node,还是你依赖therubyracer)?

      【讨论】:

      • 我正在运行最新的 64 位 Ubuntu,并且还有 Ruby 1.9.2p180。刚刚更新了gem,只有execjs过时了,但我没有解决这个问题。我的系统上有节点。
      • 您对 JS 环境的看法是正确的。我有node,我用therubyracer 试了一下,它成功了。似乎是 Ruby 和 Node 的一些互操作性问题。
      猜你喜欢
      • 1970-01-01
      • 2011-08-19
      • 2020-06-29
      • 1970-01-01
      • 2023-02-25
      • 1970-01-01
      • 1970-01-01
      • 2011-08-18
      • 2022-01-16
      相关资源
      最近更新 更多