将配置选项传递给rake gems:build

时间:2010-09-15 07:26:37

标签: ruby-on-rails rake capistrano nokogiri libxslt

在服务器上(我不是root用户),我已将libxslt编译为/home/foo/sw

所以我可以这样安装我的宝石:

gem install nokogiri -- --with-xslt-dir=/home/foo/sw

然而,同样的技术不适用于rake:

$ rake gems:build  -- --with-xslt-dir=/home/foo/sw
(in /home/foo/fooapp/releases/20100915071151)

如果我尝试强制构建,我会收到路径错误:

$ rake gems:build:force  -- --with-xslt-dir=/home/foo/sw
(in /home/foo/fooapp/releases/20100915071151)
rake aborted!
ERROR: Failed to build gem native extension.

/usr/bin/ruby extconf.rb
checking for libxml/parser.h... yes
checking for libxslt/xslt.h... yes
checking for libexslt/exslt.h... yes
checking for xmlParseDoc() in -lxml2... yes
checking for xsltParseStylesheetDoc() in -lxslt... no
-----
libxslt is missing.  please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.

如何使用rake(以及Capistrano)进行此操作?

1 个答案:

答案 0 :(得分:0)

没办法。首先,rake使用env,如params“rake .... RAILS_ENV = production”。 其次宝石:构建rake任务不会传递任何额外的参数

Rails::GemBuilder.new(specification, gem_dir).build_extensions

在rails / railties / lib / tasks / gems.rake。

解决方案是编写自己的任务或使用bundler。