Search code examples
ruby-on-railsruby-on-rails-3sqlitecentossqlite3-ruby

Rails 3.1 app can't install sqlite3 gem because libraries are out of date


The latest SQLite3 library available on CentOS 5.6 and which is installed is version 3.3.6. It's my understanding that the sqlite3 gem needs version 3.6 or higher.

How do I get my app to work with SQLite3 without upgrading the library on my server? It's in a work environment and I'm simply not allowed to upgrade it.


Solution

  • You could compile a static library of the version of sqlite you require. Then install the sqlite3 gem with a reference to your new static library.

    While I haven't tested this procedure, I could see the process being...

    1. Download and extract the SQLite source in a new directory.

    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, compile, and install.

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

    3.A. (option1) Install the SQLite gem with a reference to your new static lib.

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

    3.B. (option2) Install via bundler. *Assuming sqlite3 has already been added to the Gemfile (thanks to 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