【问题标题】:Rails, rake does not work导轨,耙子不起作用
【发布时间】:2011-11-14 14:48:35
【问题描述】:

我一直在尝试使用 Rails,但当我使用 rake 时,我收到了这个错误。关于我应该使用哪个运行时间的任何建议?

ngzhongqin@ngzhongqin-linux:~/RailsProjects/webuiltit$ rake db:create:all --trace
rake aborted!
Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/execjs-1.2.4/lib/execjs/runtimes.rb:45:in `autodetect'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/execjs-1.2.4/lib/execjs.rb:5:in `<module:ExecJS>'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/execjs-1.2.4/lib/execjs.rb:4:in `<top (required)>'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/coffee-script-2.2.0/lib/coffee_script.rb:1:in `require'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/coffee-script-2.2.0/lib/coffee_script.rb:1:in `<top (required)>'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/coffee-script-2.2.0/lib/coffee-script.rb:1:in `require'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/coffee-script-2.2.0/lib/coffee-script.rb:1:in `<top (required)>'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/coffee-rails-3.1.0/lib/coffee-rails.rb:1:in `require'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/coffee-rails-3.1.0/lib/coffee-rails.rb:1:in `<top (required)>'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.0.18/lib/bundler/runtime.rb:68:in `require'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.0.18/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.0.18/lib/bundler/runtime.rb:66:in `each'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.0.18/lib/bundler/runtime.rb:66:in `block in require'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.0.18/lib/bundler/runtime.rb:55:in `each'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.0.18/lib/bundler/runtime.rb:55:in `require'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/bundler-1.0.18/lib/bundler.rb:120:in `require'
/home/ngzhongqin/RailsProjects/webuiltit/config/application.rb:13:in `<top (required)>'
/home/ngzhongqin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
/home/ngzhongqin/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
/home/ngzhongqin/RailsProjects/webuiltit/Rakefile:5:in `<top (required)>'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/rake_module.rb:25:in `load'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/rake_module.rb:25:in `load_rakefile'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/application.rb:495:in `raw_load_rakefile'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/application.rb:78:in `block in load_rakefile'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/application.rb:129:in `standard_exception_handling'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/application.rb:77:in `load_rakefile'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/application.rb:61:in `block in run'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/application.rb:129:in `standard_exception_handling'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/lib/rake/application.rb:59:in `run'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/gems/rake-0.9.2/bin/rake:32:in `<top (required)>'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/bin/rake:19:in `load'
/home/ngzhongqin/.rvm/gems/ruby-1.9.2-p290/bin/rake:19:in `<main>'

【问题讨论】:

  • 你还在做 'rake db:create:all' 吗?你试过'rake db:create'吗?此外,您在尝试运行服务器时是否遇到同样的错误(rails3 的脚本/rails 服务器,rails2 的脚本/服务器)?

标签: ruby-on-rails unix ruby-on-rails-3.1 ubuntu-10.04


【解决方案1】:

将此添加到您的 Gemfile 中

gem 'therubyracer', require: "v8"

然后运行

bundle install

【讨论】:

  • 我在安装 therubyracer gem 之后执行此操作,最后,它可以工作了。非常感谢。
  • 我不得不从我的 GemFile 中取消注释这一行
  • 值得注意的是,显然单独安装 therubyracer gem 不能解决问题...有人会认为 execjs 会“自动选择可用的最佳运行时”( as it claims to),但出于某种原因您必须将相关行添加到您的 Gemfile。 (也许这是 Bundler 的一个“功能”,它隐藏了不在Gemfile 中的宝石?)
【解决方案2】:

您需要为这些安装运行时.. 一些不错的选择是

therubyracer - Google V8 embedded within Ruby

therubyrhino - Mozilla Rhino embedded within JRuby

Johnson - Mozilla SpiderMonkey embedded within Ruby

Mustang - Mustang V8 embedded within Ruby

Node.js

Apple JavaScriptCore - Included with Mac OS X

Mozilla SpiderMonkey

Microsoft Windows Script Host (JScript)

您可以在https://github.com/sstephenson/execjs找到更多详细信息

【讨论】:

  • -1,没有提供任何命令或直接解决方案,只是一般信息,只会让我作为 Rails 初学者感到困惑。
  • @tarrasch 为什么发帖人要提供一个命令让你盲目地粘贴到你的 shell 中?这一系列步骤取决于安装的发行版以及您要安装的软件包以满足要求。
  • @AdamHawes,我同意你的观点,但我认为 this 答案不仅没有“盲目粘贴的行”,它只是没有在文本中提供任何解释弥补这一点,这只是我以前从未听说过的东西的清单。
  • @Tarrasch 所以谷歌搜索其中的一些内容!他们每个人都解决了这个问题。 execjs 页面已经告诉您它们的用途。您需要做的就是安装一个,这取决于您使用的操作系统/发行版!
【解决方案3】:

我已经安装了 gem therubyracer、execjs、mustang,但没有任何效果。

在我的 linux (ubuntu) 上执行命令

sudo apt-get install nodejs

终于为我完成了这项工作。

也许这篇文章也有帮助:https://github.com/intridea/rails_wizard/issues/31

【讨论】:

  • 是的!这是那个。 Ubuntu Rails321 ruby​​192
  • 注意,要让execjs“检测”为therubyracer 安装的gem,您必须将以下行添加到Gemfilegem 'therubyracer', require: "v8"。显然 Bundler 隐藏了对此处未指定的 gem 的访问(在 Gemfile 中)。通过apt-get 安装nodejs 当然也可以(但该软件包并非在所有Linux 系统上都可用,例如当前稳定版本的Debian)。
猜你喜欢
  • 2023-03-18
  • 2012-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-05
  • 1970-01-01
相关资源
最近更新 更多