Rails 3.1 app无法安装sqlite3 gem,因为库已过期

时间:2011-09-09 20:47:58

标签: ruby-on-rails ruby-on-rails-3 sqlite centos sqlite3-ruby

CentOS 5.6上提供的最新SQLite3库已安装,版本为3.3.6。据我所知,sqlite3 gem需要3.6或更高版本。

如何在不升级服务器库的情况下让我的应用程序使用SQLite3?它处于工作环境中,我根本不允许升级它。

3 个答案:

答案 0 :(得分:5)

您可以编译所需的sqlite版本的静态库。然后安装sqlite3 gem并引用新的静态库。

虽然我没有测试过这个程序,但我可以看到这个过程......

<强> 1。在新目录中下载并解压缩SQLite源。

mkdir $HOME/sqlite3.7.7.1
cd $HOME/sqlite3.7.7.1
wget http://www.sqlite.org/sqlite-autoconf-3070701.tar.gz
tar -zxvf sqlite-autoconf-3070701.tar.gz
cd sqlite-autoconf-3070701

<强> 2。配置,编译和安装。

./configure --disable-shared --enable-static --prefix=$HOME/sqlite3.7.7.1
make && make install

<强> 3.A。 (option1)安装SQLite gem并引用新的静态库。

gem install sqlite3 --with-sqlite3-dir=$HOME/sqlite3.7.7.1

<强> 3.B。 (option2)通过bundler安装。 *假设sqlite3已经添加到Gemfile (感谢Lester

bundle config build.sqlite3 \
  --with-sqlite3-include=$HOME/sqlite3.7.7.1/include \
  --with-sqlite3-lib=$HOME/sqlite3.7.7.1/lib \
  --with-sqlite3-dir=$HOME/sqlite3.7.7.1/bin
bundle install

答案 1 :(得分:0)

通过一个小调整,这些步骤对我有用。对于步骤3.A,使用gem 1.3.7和rails 3.1.0。我不得不这样做:

gem install sqlite3 -- --with-sqlite3-dir=$HOME/sqlite3.7.7.1 --with-sqlite3-lib=$HOME/sqlite3.7.7.1/lib

中间的额外“ - ”允许选项不被gem文件解析

答案 2 :(得分:0)

这对我来说对MacBook有用,它有多年来积累的不同版本的sqlite3。

对我来说,gem安装是:

gem install sqlite3 - --with-sqlite3-dir = / path / to / sqlite3 / directory

换句话说,我只需要列出主要的sqlite3开发目录,但我确实必须使用额外的“ - ”。

这允许在Max OS X Lion下安装Rails 3.1