我只是尝试使用mysql后端在运行rails 3.2.5(ruby 1.8.7)的服务器上创建一个新的rails应用程序:
rails new myapp -d mysql
到目前为止一切顺利。但是,如果我尝试使用rake db:create
创建数据库,我会得到:
Could not find gem 'therubyracer (~> 0.12.0) ruby' in the gems available on this machine.
Run `bundle install` to install missing gems.
如果我按照建议(运行bundle install
)进行操作,我会得到一个将要使用的宝石列表(似乎已经安装)并且发生另一个错误:
...
Using ref (1.0.5)
Using sass (3.2.13)
Using sass-rails (3.2.6)
Installing therubyracer (0.12.0) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/usr/bin/ruby18 extconf.rb
checking for main() in -lpthread... yes
checking for v8.h... no
*** extconf.rb failed ***
所以对我来说这表明rake正在寻找错误位置的v8。错误发布还提供了有关如何使用配置选项解决此问题的建议:
You may need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/bin/ruby18
--with-pthreadlib
--without-pthreadlib
--enable-debug
--disable-debug
--with-v8-dir
--without-v8-dir
--with-v8-include
--without-v8-include=${v8-dir}/include
--with-v8-lib
--without-v8-lib=${v8-dir}/lib
/kunden/378731_1150/.gem/ruby/1.8/gems/libv8-3.16.14.3/ext/libv8/location.rb:50:in `configure': You have chosen to use the version of V8 found on your system (Libv8::Location::System::NotFoundError) and *not* the one that is bundle with the libv8 rubygem. However, it could not be located. please make sure you have a version of v8 that is compatible with 3.16.14.3 installed. You may need to special --with-v8-dir options if it is in a non-standard location
看起来我必须像bundle
一样配置bundle config --some-option
进程,但哪个选项可以解决问题?我已经尝试了所有那些v8相关的选项,但没有一个工作。以--with-v8-xxx
开头的选项似乎不允许设置本地安装的v8库的路径(gem list
给我Using libv8 (3.16.14.3)
,我可以在我的本地{{1}看到该文件夹} 目录)。 .gem
不可用,因为我不知道系统范围的v8 lib的位置(没有搜索服务器的权限)。
如何解决我的问题?
由于
好的,看起来我已经能够继续了一下。调用像--without-v8-xxx
这样的安装似乎已经说服extconf.rb在我的本地gem而不是系统位置查找v8.h.但是,我还没到那里:
RUBYOPT=-rrubygems gem install libv8
......以后:
ERROR: Error installing therubyracer:
ERROR: Failed to build gem native extension.
/usr/bin/ruby18 extconf.rb
checking for main() in -lpthread... yes
*** extconf.rb failed ***
错误发布还为我提供了一些我可以使用的选项,但我完全不了解导致错误。
有什么想法吗?
由于
答案 0 :(得分:3)
您可以使用bundle config
将配置标志传递给您的宝石,例如
bundle config build.libv8 --without-v8-lib=/path/to/lib
通过运行bundle help config
UPDATE :根据您收到的错误消息判断,似乎在查找系统的v8 时构建了libv8 gem(不知道为什么这是默认值) )。幸运的是,gem与v8源捆绑在一起,但你需要明确告诉它使用它,就像这样
bundle config build.libv8 --without-system-v8
答案 1 :(得分:0)
您可以使用:
gem install libv8 -v 3.11.8.17 -- --with-system-v8