使用 Ruby On Rails 4.2.5.1 我可以 gem install therubyracer 但捆绑包在 OS X 10.11.1 上失败

Posted

技术标签:

【中文标题】使用 Ruby On Rails 4.2.5.1 我可以 gem install therubyracer 但捆绑包在 OS X 10.11.1 上失败【英文标题】:With Ruby On Rails 4.2.5.1 I can gem install therubyracer but bundle fails on OS X 10.11.1 【发布时间】:2016-05-26 22:43:33 【问题描述】:

在 OS X 10.11.1 上为 Ruby 2.3.0 环境使用 rbenv 使用“bundle”时,我无法安装 therubyracer Gem。

这是成功的:

> gem install therubyracer
Building native extensions.  This could take a while...
Successfully installed therubyracer-0.12.2
Parsing documentation for therubyracer-0.12.2
Done installing documentation for therubyracer after 0 seconds
1 gem installed

在我的 Gemfile 中:

gem 'therubyracer', '0.12.2', platforms: :ruby

这失败了:

> bundle
Installing therubyracer 0.12.2 (was 0.12.1) with native extensions

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

current directory: /Users/jsidlosky/code/sentons/websocket-rails-demo/.bundle/gems/therubyracer-0.12.2/ext/v8
/Users/jsidlosky/.rbenv/versions/2.3.0/bin/ruby -r     ./siteconf20160215-9105-1s1s0pv.rb extconf.rb
checking for main() in -lpthread... yes
checking for main() in -lobjc... yes
checking for v8.h... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.     
You may need configuration options.
....
To see why this extension failed to compile, please check the mkmf.log which can be found here:

/Users/jsidlosky/code/sentons/websocket-rails-demo/.bundle/extensions/x86_64-darwin-15/2.3.0-static/therubyracer-0.12.2/mkmf.log

mkmf.log 文件的错误是:

conftest.c:3:10: fatal error: 'v8.h' file not found

我尝试过的一些事情:

发件人:How to install therubyracer gem on 10.10 Yosemite?

git clone https://github.com/cowboyd/libv8.git
cd libv8
bundle install
bundle exec rake clean build binary
gem install pkg/libv8-3.16.14.13.gem

发件人:Bundle install tries to use cache file

添加到 ~/.bundle/config

BUNDLE_PATH: .bundle
BUNDLE_DISABLE_SHARED_GEMS: "1"

我也试过这个:

bundle config build.libv8 --with-system-v8

我现在已经花了 5 个多小时从各种 *** 问题和其他网站尝试其他随机想法。到目前为止,即使“gem install therubyracer”工作得很好,也没有什么能让我在“bundle”中工作的 therubyracer。

我将非常感谢任何指示或解决方案。

【问题讨论】:

如果系统上安装了nodejs,则不需要rubyracer。 我正在尝试编译一些现有的 Rails 项目,我不想改变它们的工作方式来让它们工作。你是说简单地安装 nodejs(例如 brew install nodejs?)就可以解决这个捆绑问题? 除了从 Gemfile 中删除 ruby​​racer 之外,您无需进行任何更改。它将回退到 nodejs。 github.com/cowboyd/therubyracer/issues/359 你读过这个吗? 夹竹桃很好,这似乎可以解决问题。非常感谢您的宝贵时间。 【参考方案1】:

从以下评论中可以看出:github.com/cowboyd/therubyracer/issues/359

“我无法让上述任何解决方案发挥作用(或者更确切地说,我能开始工作的一切都需要我团队的其他成员重新捆绑)。然而,从 rbenv 切换到 RVM 后,捆绑安装运行顺利。”

我尝试从 rbenv 切换到 RVM,效果很好。我现在可以“捆绑”并且 therubyracer gem 可以完美安装。

【讨论】:

以上是关于使用 Ruby On Rails 4.2.5.1 我可以 gem install therubyracer 但捆绑包在 OS X 10.11.1 上失败的主要内容,如果未能解决你的问题,请参考以下文章

ruby on rails (函数使用)

第一个CRUD的制作方法(Ruby on Rails 開發秘籍 | Ruby on Rails 快速入門)

思考Ruby On Rails的底层代码(Ruby on Rails 開發秘籍 | Ruby on Rails 快速入門)

Ruby on Rails Installation(Learn Rails5.2)

Ruby on Rails - 在 OSX 上使用 Ruby 2.4.4 而不是 rails 5.1.6 的配置问题/异常

Ruby on Rails Cron 作业示例