Skip to content

mogotest/sequel-rails

 
 

Repository files navigation

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.

About

A gem for using Sequel with Rails 3.x and 4.x

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 100.0%