【发布时间】:2011-11-14 02:25:05
【问题描述】:
CentOS 5.6 上可用且已安装的最新 SQLite3 库是 3.3.6 版。我的理解是 sqlite3 gem 需要 3.6 或更高版本。
如何在不升级服务器上的库的情况下让我的应用与 SQLite3 一起使用?它在工作环境中,我根本不允许升级它。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 sqlite centos sqlite3-ruby
CentOS 5.6 上可用且已安装的最新 SQLite3 库是 3.3.6 版。我的理解是 sqlite3 gem 需要 3.6 或更高版本。
如何在不升级服务器上的库的情况下让我的应用与 SQLite3 一起使用?它在工作环境中,我根本不允许升级它。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 sqlite centos sqlite3-ruby
您可以编译您需要的 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. (选项 1)安装 SQLite gem 并引用您的新静态库。
gem install sqlite3 --with-sqlite3-dir=$HOME/sqlite3.7.7.1
3.B. (选项2)通过捆绑器安装。 *假设 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
【讨论】:
bundle config build.sqlite3 --with-sqlite3-include=$HOME/include --with-sqlite3-lib=$HOME/lib --with-sqlite3-dir=$HOME/bin 这样使用捆绑程序自定义安装。然后只需要运行bundle install,一切都很好。
这些步骤对我有用,只需稍加调整即可。对于步骤 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文件不解析选项
【讨论】:
这适用于我的 MacBook,它具有多年来积累的一些不同版本的 sqlite3。
对我来说,gem 安装是:
gem install sqlite3 -- --with-sqlite3-dir=/path/to/sqlite3/directory
换句话说,我只需要列出主要的 sqlite3 开发目录,但我必须使用额外的“--”。
这允许在 Max OS X Lion 下安装 Rails 3.1
【讨论】: