Skip to content
A gem for using Sequel with Rails3
Ruby
Pull request Compare This branch is 164 commits behind TalentBox:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
ci
lib
spec
tasks
.document
.gitignore
.rspec
.travis.yml
Gemfile
History.md
LICENSE
README.md
Rakefile
config.ru
sequel-rails.gemspec

README.md

sequel-rails

Build Status Code Climate

This gem provides the railtie that allows sequel to hook into rails3 and thus behave like a rails framework component. Just like activerecord does in rails, sequel-rails uses the railtie API to hook into rails. The two are actually hooked into rails almost identically.

The code for this gem was initially taken from the excellent dm-rails project.

This was originally a fork of brasten's sequel-rails that has been updated to support newer versions of rails.

Since January 2013, we've became the official maintainers of the gem after brasten proposed us.

Using sequel-rails

Using sequel with rails3 requires a couple minor changes.

First, add the following to your Gemfile (after the Rails lines):

# depending on you database
gem "pg"        # for PostgreSQL
gem "mysql2"    # for MySQL
gem "sqlite3"   # for Sqlite

gem "sequel-rails"

... be sure to run "bundle install" if needed!

Secondly, you'll need to require the different Rails components separately in your config/application.rb file, and not require ActiveRecord. The top of your config/application.rb will probably look something like:

# require 'rails/all'

# Instead of 'rails/all', require these:
require "action_controller/railtie"
# require "active_record/railtie"
require "action_mailer/railtie"
require "sprockets/railtie"

Starting with sequel-rails 0.4.0.pre3 we don't change default Sequel behaviour nor include any plugin by default, if you want to get back the previous behaviour, you can create a new initializer (eg: config/initializers/sequel.rb) with content:

require "sequel_rails/railties/legacy_model_config"

After those changes, you should be good to go!

Configuration

You can configure some options with the usual rails mechanism, in config/application.rb and/or in config/environments/*.rb.

    # Allowed options: :sql, :ruby.
    config.sequel.schema_format = :sql

    # Whether to dump the schema after successful migrations.
    # Defaults to false in production and test, true otherwise.
    config.sequel.schema_dump = true

    # These override corresponding settings from the database config.
    config.sequel.max_connections = 16
    config.sequel.search_path = %w(mine public)

    # Configure whether database's rake tasks will be loaded or not
    # Defaults to true
    config.sequel.load_database_tasks = false

Enabling plugins

If you want to enable plugins for all your models, you should use the after_connect configuration option in config/application.rb (0.6.2+):

    config.sequel.after_connect = proc do
      Sequel::Model.plugin :timestamps, update_on_create: true
    end

This will ensure that these plugins are loaded before any Sequel models are loaded. Loading plugins into Sequel::Model after subclasses are already created is not supported by Sequel. You can also load extensions in after_connect or perform any custom actions that you need.

Available sequel specific rake tasks

To get a list of all available rake tasks in your rails3 app, issue the usual in you app's root directory:

rake -T

or if you don't have hooks in place to run commands with bundle by default:

bundle exec rake -T

Once you do that, you will see the following rake tasks among others. These are the ones that sequel-rails added or replaced:

rake db:create[env]                   # Create the database defined in config/database.yml for the current Rails.env
rake db:create:all                    # Create all the local databases defined in config/database.yml
rake db:drop[env]                     # Create the database defined in config/database.yml for the current Rails.env
rake db:drop:all                      # Drops all the local databases defined in config/database.yml
rake db:force_close_open_connections  # Forcibly close any open connections to the test database
rake db:migrate                       # Migrate the database to the latest version
rake db:migrate:down                  # Runs the "down" for a given migration VERSION.
rake db:migrate:redo                  # Rollbacks the database one migration and re migrate up.
rake db:migrate:reset                 # Resets your database using your migrations for the current environment
rake db:migrate:up                    # Runs the "up" for a given migration VERSION.
rake db:reset                         # Drops and recreates the database from db/schema.rb for the current environment and loads the seeds.
rake db:schema:dump                   # Create a db/schema.rb file that can be portably used against any DB supported by Sequel
rake db:schema:load                   # Load a schema.rb file into the database
rake db:seed                          # Load the seed data from db/seeds.rb
rake db:setup                         # Create the database, load the schema, and initialize with the seed data
rake db:test:prepare                  # Prepare test database (ensure all migrations ran, drop and re-create database then load schema). This task can be run in the same invocation as other task (eg: rake db:migrate db:test:prepare).

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add specs for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

The sequel-rails team

  • Jonathan Tron (JonathanTron) - Current maintainer
  • Joseph Halter (JosephHalter) - Current maintainer

Previous maintainer

Original project:

  • Brasten Sager (brasten) - Project creator

Contributors

Improvements has been made by those awesome contributors:

  • Benjamin Atkin (benatkin)
  • Gabor Ratky (rgabo)
  • Joshua Hansen (binarypaladin)
  • Arron Washington (radicaled)
  • Thiago Pradi (tchandy)
  • Sascha Cunz (scunz)
  • Brian Donovan (eventualbuddha)
  • Jack Danger Canty (JackDanger)
  • Ed Ruder (edruder)
  • Rafał Rzepecki (dividedmind)
  • Sean Sorrell (rudle)
  • Saulius Grigaliunas (sauliusg)
  • Jacques Crocker (railsjedi)
  • Eric Strathmeyer (strathmeyer)
  • Jan Berdajs (mrbrdo)
  • Robert Payne (robertjpayne)

Credits

The dm-rails team wrote most of the original code, I just sequel-ized it, but since then most of it as been either adapted or rewritten.

Copyright

Copyright (c) 2010-2013 The sequel-rails team. See LICENSE for details.

Something went wrong with that request. Please try again.