在Heroku上运行Ruby 1.9.2

5

我正在尝试在Heroku上创建一个新的应用程序,但无论我做什么,Heroku似乎都运行Ruby 1.9.1而不是1.9.2。

我已经创建了我的应用程序...

heroku create writings --stack cedar

然后我将我的开发分支推送到Heroku的主分支以进行测试。

git push heroku develop:master

但这个应用程序出现了错误...查看heroku日志...似乎这是罪魁祸首的错误。
 /app/vendor/bundle/ruby/1.9.1/gems/execjs-1.1.3/lib/execjs/runtimes.rb:43:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)

这表明它在运行ruby 1.9.1,对吗?

如果我运行heroku config,它会显示...

heroku config
DATABASE_URL        => postgres://mxlvaczibv:wMtsU7TrPMQM5n-X5SfX@ec2-50-19-226-179.compute-1.amazonaws.com/mxlvaczibv
GEM_PATH            => vendor/bundle/ruby/1.9.1
LANG                => en_US.UTF-8
PATH                => vendor/bundle/ruby/1.9.1/bin:/usr/local/bin:/usr/bin:/bin
RACK_ENV            => production
RAILS_ENV           => production
SHARED_DATABASE_URL => postgres://mxlvaczibv:wMtsU7TrPMQM5n-X5SfX@ec2-50-19-226-179.compute-1.amazonaws.com/mxlvaczibv

这不是显示它正在运行 1.9.1 吗?我完全困惑了... 我以为 cedar stack 运行的是 1.9.2。任何帮助都将不胜感激。

谢谢, mark.


1
通过打开控制台 $ heroku console 并在控制台内查看 RUBY_VERSION 常量来检查您的 Ruby 版本。(我假设这适用于 Cedar,但尚未尝试) - Joshua Cheek
3个回答

11

它没有显示正在运行Ruby 1.9.1。由于标准库在1.9.1和1.9.2之间变化很少,因此它们都使用相同的路径。您会注意到这不仅出现在Heroku上。

看起来execjs希望在系统上安装JS运行时。显然,Celadon Cedar确实有一个(NodeJS),但在rails 3.1rc5到来之前它无法工作。在那之前,请按照此答案中的说明进行操作。


谢谢!我添加了rubyracer gem,这样就解决了那个错误。但是现在我在heroku上只得到一个通用的Error H10(应用程序崩溃)错误。我相信这完全是另外一回事。 - markstewie
我认为Heroku上的默认堆栈现在也使用1.9.2。 - agmcleod

2

我正在使用 Ruby 1.9.2 和 Heroku。我的 Gemfile 中有这个内容。我记得以前在尝试部署到 Heroku 时遇到了某种类型的 JavaScript 错误,我相信这个问题已经解决了。

group :production do
  gem 'therubyracer-heroku',  '0.8.1.pre3'
end

0

尝试使用:

heroku create --stack bamboo-mri-1.9.2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接