1

我从生产中复制了应用程序并进行了捆绑安装以安装生产版本中而不是我的本地计算机上的所有缺少的 gem。

Gem.lock 文件的 ruby​​racer 版本为“0.10.1”。因此,当它尝试使用 bundle install 安装此版本时,出现了以下错误。

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /home/user/.rvm/rubies/ruby-1.9.3-p392/bin/ruby extconf.rb                                                                                                                                                                                                           
*** 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.                                                                                                                                                                                                                                  

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=/home/user/.rvm/rubies/ruby-1.9.3-p392/bin/ruby                                                                                                                                                                                                               
extconf.rb:15:in `<main>': undefined method `include_path' for Libv8:Module (NoMethodError)                                                                                                                                                                                    


Gem files will remain installed in /home/user/.rvm/gems/ruby-1.9.3-p392/gems/therubyracer-0.10.1 for inspection.                                                                                                                                                             
Results logged to /home/user/.rvm/gems/ruby-1.9.3-p392/gems/therubyracer-0.10.1/ext/v8/gem_make.out      

由于此错误,我无法在本地计算机上的生产版本代码上运行脚手架命令。请帮帮我。

我们可以编辑 gemfile.lock 以删除“therubyracer (0.10.1)”,然后运行命令生成脚手架,然后在我使用生成脚手架后将更改放回原处吗?

编辑 :

 *** 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.

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=/home/vsadhu/.rvm/rubies/ruby-1.9.3-p392/bin/ruby
extconf.rb:14:in `<main>': undefined method `include_path' for Libv8:Module (NoMethodError)
4

1 回答 1

1

回应以下引用:

我们可以编辑 gemfile.lock 以删除“therubyracer (0.10.1)”吗

不,我们不可以。根据您使用的操作系统,您可以执行以下操作:

$gem uninstall libv8 
$gem install therubyracer

我最近有一个 Rails 应用程序,我也在运行 Rails 3.2.14,并且有以下内容:

group :assets do
  gem 'therubyracer', :require => 'v8'
  gem 'less-rails'
  gem 'coffee-rails', '~> 3.2.1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', :platforms => :ruby

  gem 'uglifier', '>= 1.0.3'
end

在将此资产块添加到 gemfile 之前,您是否应该使用第二种方法。删除你的Gemfile.lock,然后将资产块添加到 Gemfile,保存并运行bundle update

于 2013-08-29T17:45:25.753 回答